动态gridviewallowpaging返回DataBind错误

本文关键字:错误 DataBind 返回 gridviewallowpaging 动态 | 更新日期: 2023-09-27 18:05:54

我在我的网页上添加了一个GridView到PlaceHolder,并将其数据源设置为linq查询。问题是,当控制通过gv.DataBind();运行时,它会在我的脸上爆炸,返回一个对象未设置bla bla bla错误。

堆栈跟踪看起来像

在System.Web.UI.WebControls.GridView.get_StateFormatter ()在System.Web.UI.WebControls.GridView。BuildCallbackArgument (Int32 pageIndex)在System.Web.UI.WebControls.GridView。createnumerpagager (tablelow row, PagedDataSource, PagedDataSource,布尔值addFirstLastPageButtons)在System.Web.UI.WebControls.GridView。InitializePager(GridViewRow row, Int32 columnSpan, PagedDataSource)…

我的代码是

var query = from list in dc.mytable
            select list;
gv.DataSource = query.ToList();
gv.DataBind();

动态gridviewallowpaging返回DataBind错误

在寻找了很长一段时间的解决方案后,我提出了一个有效的建议,如果你需要的话,我与你分享。不幸的是,我关闭了浏览器,不记得在哪里看到了它,把功劳给了解决我问题的家伙。

我把它贴在这里,因为我在这里没有找到任何解决我的问题的答案。

这个问题的原因是,因为GridView是动态添加的,有一些问题与statformatter尚未设置(或类似的东西),所以它需要解决的是添加一个事件处理程序的Load事件和移动gv.DataBind();:

gv.DataSource = query;
gv.Load += (s, e) => {
  gv.DataBind();
}

效果很好:)