Domanda

Ho una query Linq piuttosto complicata che non riesco a trovare in un LinqDataSsource da utilizzare in un 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();

Come posso ottenere questo in un GridView? Grazie!

È stato utile?

Soluzione

È possibile configurare Gridview senza origine dati. Imposta le colonne gridview e, in codebehind, associa quel risultato alla vista grid.

Altri suggerimenti

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

@leppie - Non è necessario chiamare un ToList () su IQueryable quando lo si collega come origine dati.

A condizione che DataContext non sia stato eliminato prima che il metodo DataBind chiamato ToList sia una chiamata ridondante.

Per impostazione predefinita, DataContext utilizza il caricamento lento, in modo che i dati vengano recuperati dal database solo quando IQueryable è enumerato. ToList () esegue un'enumerazione ed effettua la chiamata, così come DataBind ().

Quindi puoi fare qualcosa del genere:

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

A seconda di come lo smaltimento di DataContext determina cosa associare a un'origine dati.

Puoi quindi utilizzare le colonne generate automaticamente su GridView, in modo che ogni proprietà dell'oggetto restituito venga trasformata in una colonna, oppure puoi scrivere le colonne con il designer e impostare lì le regole di associazione.

Puoi associare IQueryable < > digitare su GridView utilizzando il controllo LinqDataSource. http://johnsobrepena.blogspot.com/2010/ 01 / data-bind-coolgridview-to-iqueryable.html

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top