我有一个看起来像这样的 GridView:
<asp:GridView ID="MyGridView"
runat="server"
AutoGenerateColumns="False"
OnRowDataBound="MyGridView_RowDataBound" >
<asp:HyperLinkField . . . . . bla bla/>
<asp:BoundField . . . . . . . bla bla/>
</asp:GridView>
我的事件处理程序 (MyGridView_RowDataBound) 实际上如下所示:
protected void MyGridView_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType != DataControlRowType.DataRow)
return;
// do stuff here
}
出于某种原因,我的代码永远不会到达“//在这里做事”这一行。它没有通过数据行检查,因为OnRowDataBound
只为我的标题行触发。
我已经验证了数据行是通过使用MyGridView_RowCreated
处理程序创建的。绑定也很明显,因为当我运行网站时,我可以看到我的数据库中的行出现了。最重要的是,我已经验证了该MyGridView.DataBind()
语句正在运行。
我忽略了什么导致我的事件处理程序不为数据行触发?
编辑:经过进一步检查,看起来GridView.DataBound
事件根本没有触发,所以我不能使用DataBound
然后循环遍历行。