1

我正在尝试在 OnRowDataBound 事件中向我的 GridView 添加样式并添加行行为(更改光标并添加 onmouseover 和 onmouseout 以突出显示一行)。当我使用 HtmlTextWriter 在该方法中显示行的标记时,一切看起来都很好。但是,在浏览器端的页面源中,我的 <tr> 元素根本没有属性。如果我在页面的 OnPreRender 或 OnPreRender 完成事件中转储标记,我发现我的更改已经消失了。这里发生了什么?

我正在使用 VS2010 Professional 并针对 3.5 框架。

更新:我尝试了一些不同的方法来确定哪里出了问题。我对 GridView 和 GridViewRow 进行了子类化,以便我可以在一些方法调用之前确定我的设置何时被破坏。结果是在 GridView.RenderControls() 中删除了我的属性。我不明白这一点,因为有几十个例子(包括在这个网站上)使用这种技术添加 javascript 事件。我最终通过覆盖我的子类中的 RenderControl() 方法并使用它来调用 base.Render() 而不是 base.RenderControl() 取得了成功......奇怪但真实。

4

1 回答 1

1

我最终通过子类化 GridView 并在我的子类中覆盖 RenderControl() 方法并使用它来调用 base.Render() 而不是 base.RenderControl() 来取得成功......奇怪但真实。

于 2012-08-27T20:06:48.500 回答