0

GridView で使用するために LinqDataSsource にアクセスできないように見えるかなり複雑な Linq クエリがあります。

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に入れるにはどうすればよいですか? ありがとうございました!

4

4 に答える 4

3
gridview.DataSource = tikPart.ToList();
gridview.DataBind();
于 2008-09-27T07:47:23.657 に答える
3

@leppie - データ ソースとしてアタッチするときに IQueryable で ToList() を呼び出す必要はありません。

DataBind メソッドが呼び出される前に DataContext が破棄されていない場合、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 の破棄によって、データ ソースに何をバインドするかが決定されます。

次に、GridView で自動生成された列を使用して、返されたオブジェクトのすべてのプロパティが列に変換されるようにするか、デザイナーで列を記述してそこでバインディング ルールを設定することができます。

于 2008-09-27T08:04:50.213 に答える
0

LinqDataSource コントロールを使用して IQueryable<> 型を GridView にバインドできます。http://johnsobrepena.blogspot.com/2010/01/data-bind-coolgridview-to-iqueryable.html

于 2010-02-02T02:51:34.730 に答える
0

データソースなしで Gridview をセットアップできます。グリッドビュー列をセットアップし、分離コードでその結果をグリッド ビューにバインドします。

于 2008-09-27T07:48:36.397 に答える