2009-06-16 8 views
6

Non ho mai usato datagrids e così, ma oggi ho trovato un problema semplice e ho deciso di "databind" per finire più velocemente, tuttavia ho scoperto che non lo fa lavoro come mi aspettavo.Il modo più semplice per usare DatagridView con Linq su SQL

ho pensato che facendo qualcosa di semplice come:

var q = from cust in dc.Customers 
     where cust.FirstName == someString 
     select cust; 

var list = new BindingList<Customer>(q.ToList()); 
return list; 

Poi utilizzando tale lista in un DataGridView1.DataSource era tutto quello che mi serviva, tuttavia, non importa quanto I google, non riesco a trovare un esempio decente su come popolare (per aggiungere/modificare/modificare) i risultati di una singola query di tabella in un oggetto DataGridView1. La maggior parte dei campioni parla di ASP.NET che mi manca, questo è WinForms.

Qualche idea?

Mi sono imbattuto in altri post e in GetNewBindingList, ma non sembra che cambi molto.

Cosa mi manca (deve essere evidente)?

risposta

4

È possibile associare il risultato IQueryable a DataGridView, non è sicuro del motivo per cui lo si converte in BindingList, esiste un motivo specifico?

+2

Per fornire vincolante in modo che i cambiamenti nel DataGridView possono essere notificati a due vie? – Kev

+0

Beh, nessun motivo. Come ho già detto, sono al 100% nuovo a DataGrid, questo è un esempio che ho trovato da qualche parte su Google Earth. : S (Ma non funziona) –

3

Si potrebbe dare un'occhiata al TableList<T> da this post - basato su BindingList<T>, ma con ganci nel contesto dei dati.

+0

Oh, ho visto quel post prima (l'ho aperto in una delle schede), ho appena realizzato che era il tuo post! :) Rileverà e chiederà se ho delle domande. Grazie. –

0

Basta legarlo.

var q = from cust in dc.Customers 
      where cust.FirstName == someString 
      select cust; 
    DataGridView1.DataSource = q 

Non è necessario convertirlo in elenco.

+2

Ciò non consentirà la modifica in DataGridView. Ha menzionato "aggiungi/modifica/modifica". –

0

stringa = "2014/12/11"

Prova questa:

try 
{ 
    con_a_refacionesDataContextDataContext con = new con_a_refacionesDataContextDataContext(); 
    BindingSource b = new BindingSource(); 
    b.DataSource = from eq in con.Venta 
        where eq.fecha_dia == st 
        select eq; 
    dataGridView1.DataSource = b; 
} 
catch 
{ 
} 
Problemi correlati