2010-08-27 94 views
3

我正在尋找一種方法來使用linq查詢在運行時設置數據源時使用GridView進行分頁。這裏是我的代碼:使用Linq查詢作爲數據源的ASP.NET GridView分頁

ETDataContext etdc = new ETDataContext(); 
var accts = from a in etdc.ACCOUNTs 
      orderby a.account_id 
      select new 
      { 
       Account = a.account_id, 
       aType = a.SERVICEs.FirstOrDefault().SERVICE_TYPE.service_type_desc, 
       name = a.SERVICEs.FirstOrDefault().service_name, 
       Letter_dt = a.create_dt, 
       PrimAccthldr = a.PEOPLE.first_name + " " + a.PEOPLE.middle_name + " " + a.PEOPLE.last_name 
      }; 
GridView1.DataSource = accts; 
GridView1.BindData(); 

我有網格設置爲允許分頁,但我得到的是說,PageIndexChanging事件尚未處理的錯誤。我搜索周圍,發現如下:

protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e) 
{ 
    GridView1.PageIndex = e.NewPageIndex; 
    GridView1.DataBind(); 
} 

但是效果很好,當你使用一個數據表,但不與LINQ。如果我在該事件中添加重新綁定,它必須重新查找7000條可能有點慢的記錄。有沒有人知道如何解決使用linq這樣的分頁問題?

回答

3
+0

描述的源不要使用DAL或objectdatasource對象是。只需簡單地用linq創建一個匿名類型,然後直接綁定到網格。 – ecspot 2010-08-27 02:48:11

+0

如果想按照這種方式,你會有糟糕的表現。這不是這樣做的正確方式......您應該使用LINQ數據源,例如,爲您提供高效分頁支持。 – 2010-08-27 02:57:11

+0

我無法使用linqdatasource鏈接多個表,否則我只會綁定到那個。你知道一種使用linqdatasource來做這個查詢的方法嗎?數據來自4個不同的表格。 – ecspot 2010-08-27 03:01:53