2011-08-18 61 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

工作就像一個魅力!感謝張貼這個答案:) –