1

グリッドビューの行をクリック可能にしようとしています。これにより、ポストバックが発生し、コード ビハインドを実行できるようになります。

これは、GridView の RowDataBound イベント ハンドラーに含まれています。これは機能します:

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. このタスクを達成しようとする (javascript からコード ビハインドを呼び出す) 際に、これを行う代替方法はありますか? 私はいくつかの読書をして、WebMethods() に出くわしましたが、最終的には、動作するために静的である必要があるという事実が気に入らなかったのです。上記は実際に必要な機能を正確に提供します。それが許容できる方法であることを確認したいだけです(つまり、非推奨などではありません)。この時点で。
4

1 に答える 1

1

これはあなたを助けることができます:

  1. 最初のものは、onClick ハンドラーが JavaScript の __doPostBack 関数に関連付けられていることを指定したために機能します。「javascript:」は、関数が JavaScript で記述されていることを指定するだけであり、スクリプトが meta タグで指定されたものと異なる場合にのみ使用する必要があります。

    2 つ目は、javascript ハンドラーに html スクリプトを指定しているため、機能しません。これが JavaScript インタープリターに渡されると、タグを理解できないため、機能しません。

  2. ここで述べたように、__doPostBack はすべてのケースで推奨されるわけではありません。ただし、ポストバックを作成する他の選択肢がない場合は、それを使用できます。このリンクは、より多くの情報を提供することができます。

于 2012-04-17T15:25:57.240 に答える