2011-08-18 80 views
3

我已经将GridView添加到我的网页上的PlaceHolder,并且将它的数据源设置为linq查询。麻烦的是,当控制运行时虽然gv.DataBind();它会爆炸我的脸上返回一个对象没有设置bla bla bla错误。Dynamic GridView AllowPaging在DataBind上返回错误

堆栈跟踪看起来像

在System.Web.UI.WebControls.GridView.get_StateFormatter() 在System.Web.UI.WebControls.GridView.BuildCallbackArgument(的Int32的PageIndex) 的系统。 Web.UI.WebControls.GridView.CreateNumericPager(行的TableRow,PagedDataSource pagedDataSource,布尔addFirstLastPageButtons) 在System.Web.UI.WebControls.GridView.InitializePager(GridViewRow行的Int32 columnSpan,PagedDataSource pagedDataSource) ....

和我的代码是

var query = from list in dc.mytable 
      select list; 

gv.DataSource = query.ToList(); 
gv.DataBind(); 
+0

这是个问题吗?如果没有,您可能会更有帮助将其作为问题发布,然后发布您的答案。 – MatthewMartin

+0

你明白了。谢谢! – Will

回答

7

四处寻找相当长的一段解决方案之后,我来到了该工作的建议,而我与你分享,你应该需要。不幸的是,我关闭了浏览器,不记得我在哪里看到它,以向那些解决我的问题的人提供信任。

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

这个问题的原因是,因为GridView是动态添加的,StateFormatter还没有被设置(或类似的东西),所以它只需要添加一个事件处理程序Load事件并移动gv.DataBind();有:

gv.DataSource = query; 

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

就像一个魅力:)

+0

工作就像一个魅力!感谢张贴这个答案:) –