スタイルを追加し、OnRowDataBound イベントで行の動作を GridView に追加しようとしています (カーソルを変更し、onmouseover と onmouseout を追加して行を強調表示します)。HtmlTextWriter を使用してそのメソッド内の行のマークアップを表示すると、すべて問題なく表示されます。ただし、ブラウザー側のページ ソースでは、私の <tr> 要素には属性がまったくありません。ページの OnPreRender または OnPreRender complete イベントでマークアップをダンプすると、その時点で変更が消えていることがわかります。何が起きてる?
私は VS2010 Professional を使用しており、3.5 フレームワークをターゲットにしています。
更新:どこがうまくいかないかを判断するために、いくつかの異なることを試しました。GridView と GridViewRow の両方をサブクラス化して、いくつかのメソッド呼び出しの前に出て、設定がいつ爆発するかを判断できるようにしました。私の属性が削除されたのは GridView.RenderControls() であることが判明しました。この手法を使用して JavaScript イベントを追加する例 (このサイトを含む) が多数あるため、これを理解できません。サブクラスで RenderControl() メソッドをオーバーライドし、それを使用して base.RenderControl() ではなく base.Render() を呼び出すことで成功しました...奇妙ですが本当です。