2012-04-17 5 views
1

私はグリッドビューをクリック可能にして、コードビハインドを実行できるようにポストバックを発生させようとしています。Javascriptの説明でコードビハインドを呼び出す

私はGridViewのRowDataBoundイベントハンドラにこれを持っています。これはWORKS:

if (e.Row.RowType == DataControlRowType.DataRow) 
{ 
    e.Row.Attributes["onmouseover"] = "this.style.cursor='pointer';this.style.textDecoration='underline';"; 
    e.Row.Attributes["onmouseout"] = "this.style.textDecoration='none';"; 
    e.Row.Attributes["onclick"] = "javascript:__doPostBack('PostBackFromItemWindow', '');"; 
} 

しかし、これは動作しません:

if (e.Row.RowType == DataControlRowType.DataRow) 
{ 
    e.Row.Attributes["onmouseover"] = "this.style.cursor='pointer';this.style.textDecoration='underline';"; 
    e.Row.Attributes["onmouseout"] = "this.style.textDecoration='none';"; 
    e.Row.Attributes["onclick"] = "<script type='text/javascript'>__doPostBack('PostBackFromItemWindow', '');</script>"; 
} 

質問:

  1. は、なぜ最初の作業を行いますが、2番目はないでしょうか?
  2. このタスク(javascriptからコードビハインドを呼び出す)を実行しようとすると、これを行うための代替方法がありますか?私はいくつかの読書をして、WebMethods()に出くわしましたが、最終的には働くためには静的である必要があるという事実を好まなかったのです。私が必要とする機能を実際に私に提供しているのですが、それはそれを実行するための許容可能な方法(つまり、廃止されていないものなど)であることを確かめたいと思います。この時点で。

答えて

1

これはあなたを助けることができる:あなたがのonClickハンドラがJavaScriptである__doPostBack関数に関連していることを指定している、ので

  1. 最初のものは動作します。 'javascript:'は、関数がjavascriptで記述されていることを指定するだけで、スクリプトがmetaタグで指定されているスクリプトと異なる場合にのみ使用する必要があります。

    javascriptハンドラのhtmlスクリプトが指定されているため、2番目のスクリプトは機能しません。これは、javascriptインタープリタに行くと、それはタグを理解することができないだろうし、したがってwouldnt仕事。

  2. __doPostBackは、前述のようにすべてのケースで推奨されていません。hereしかし、ポストバックを作成する他に選択肢がなければ、それを使うことができます。これはlinkはあなたに多くの情報を与えることができるでしょう。

+0

こんにちは!良い情報。 – CptSupermrkt

関連する問題