【发布时间】:2015-05-14 17:46:30
【问题描述】:
我有一个gridview,只有当它不是回发时我才绑定它,但是我想在回发时调用函数RowDataBound。 我该怎么做呢
protected void gridview1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowIndex == -1)
{
//Some logic
}
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
LoadGridView();
}
else
{
gridview1_RowDataBound(null, null); // Object reference not set to an instance of an object
}
}
我怎么称呼它?
【问题讨论】:
-
调用RowDataBound的目的是什么?问题是调用它不是作为事件处理程序,而是作为一个函数没有多大意义。它实际上仅在 gridview 被数据绑定时有用,否则你无权访问事件参数、数据项等。确保调用它确实是你想要的
-
也许将您的
if (!IsPostBack)移动到gridview1_RowDataBound事件处理程序而不是Page_Load事件处理程序中。 -
@Andrei 我获得了网格视图的所有数据,但我想在第一行添加一个文本框,我尝试了几种方法,但我只能通过 rowdatabound 来完成。因此,如果行数据绑定中的索引为 -1,那么我添加文本框。
-
好吧,我不能说我完全理解这一点,但一个快速的解决方法是将
if (e.Row.RowIndex == -1)替换为if (e == null),这会导致您的引用为空。但是,我再次高度怀疑您这样做是错误的 - 只有在 row 实际是数据绑定时才应该调用 rowdatabound -
@Andrei 其实我是在第一行插入一个文本框,如果
e.Row.RowIndex == -1,那么e.Row.Cells[0].Controls.Add(Textbox1);所以我需要传递 gridview1 对象。
标签: c# asp.net gridview rowdatabound