2008-09-27 49 views
0

我有一個相當複雜的Linq查詢,我似乎無法得到成在GridView使用LinqDataSsource:獲得一個LINQ-toSQL查詢,以顯示在一個GridView

IEnumerable<ticket> tikPart = (
    from p in db.comments where 
     p.submitter == me.id && 
     p.ticket.closed == DateTime.Parse("1/1/2001") && 
     p.ticket.originating_group != me.sub_unit 
    select p.ticket 
    ).Distinct(); 

我怎樣才能得到這成一個GridView?謝謝!

回答

0

你可以設置你的Gridview沒有數據源。設置gridview列,並在代碼隱藏中將該結果綁定到網格視圖。

3
gridview.DataSource = tikPart.ToList(); 
gridview.DataBind(); 
+0

哇...當我看到它的時候太簡單了。 有沒有什麼辦法可以把它放到一個DataSource中,這樣我可以使用GridVIew的排序? – naspinski 2008-09-27 07:52:17

+0

您可以使用對象數據源並將其綁定到返回該查詢的方法。我從來沒有使用LinqDatasource,所以我不能幫助那裏 – mattlant 2008-09-27 07:54:58

+0

當你做我提到的方法時,你必須做排序和分頁自己。使用LinqDataSource可能更容易使用上面的matts建議。 – leppie 2008-09-27 08:04:32

3

@leppie - 沒有必要將其附着用作數據源時,在IQueryable的調用ToList()。

如果你的DataContext在DataBind方法被調用之前還沒有被拋棄,ToList是一個多餘的調用。

默認情況下,一個DataContext使用延遲加載,以便數據當IQueryable的枚舉從數據庫中僅取出。 ToList()執行枚舉並完成調用,DataBind()也是如此。

所以,你可以做這樣的事情:

using(MyDataContext ctx = new MyDataContext(){ 
    this.MyGridView.DataSource = from something in ctx.Somethings where something.SomeProperty == someValue select something; 
    this.MyGridView.DataBind(); 
} 

根據您的處置你的DataContext如何determins什麼綁定到數據源。

然後,您可以使用自動生成的GridView的列,所以,在你返回的對象每個屬性變成一列,也可以與設計師寫的列並設置綁定規則存在。

相關問題