Frage

Ich habe eine ziemlich komplizierte Linq-Abfrage, die ich nicht bekommen in eine LinqDataSsource für die Verwendung in einem Gridview erscheinen kann:

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();

Wie kann ich dies in einem Gridview? Vielen Dank!

War es hilfreich?

Lösung

Sie können Setup Ihre Gridview ohne Datenquelle. Setup die Grid Spalten und in Code-Behind binden, die zur Folge hat, um die Rasteransicht.

Andere Tipps

gridview.DataSource = tikPart.ToList();
gridview.DataBind();

@leppie -. Es gibt keine Notwendigkeit, eine ToList () auf der IQueryable zu rufen, wenn sie als Datenquelle Anbringen

Sofern Ihr Datacontext hat nicht vor der DataBind-Methode angeordnet worden ToList genannt wird, ist ein redundanter Anruf.

In der Standardeinstellung ein Datacontext verwendet faul-Laden, so dass die Daten nur abgerufen aus der Datenbank ist, wenn die IQueryable Aufzählungs wird. ToList () führt eine Enumeration und macht den Anruf, so tut DataBind ().

So können Sie etwas tun können:

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

Je nachdem, wie Ihre Entsorgung Ihres Datacontext determins was zu einer Datenquelle zu binden.

Sie können dann entweder verwenden Auto Spalten erzeugen auf dem Gridview, so dass jedes Objekt in Ihrem zurückgegebene Objekt in eine Säule eingeschaltet wird, oder Sie können die Spalten mit dem Designer schreiben und dort die verbindlichen Regeln einrichten.

Sie können IQueryable binden <> geben LinqDataSource-Steuerelement zu Gridview verwenden. http://johnsobrepena.blogspot.com/2010/ 01 / Daten-bind-coolgridview-to-iqueryable.html

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top