2009-06-16 10 views
6

Ich habe noch nie Datagrids und solche verwendet, aber heute bin ich auf ein einfaches Problem und beschlossen, „databind“ stuff diese schneller zu beenden, aber ich habe festgestellt, dass es doesn‘ Ich arbeite so, wie ich es erwartet habe.einfachste Weg, eine Datagridview mit Linq zu verwenden, um SQL

ich aber, dass durch etwas so Einfaches wie tun:

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

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

Dann mit dieser Liste in einem DataGridView1.DataSource war alles, was ich brauchte, aber egal wie viel ich google, kann ich nicht finden Ein anständiges Beispiel dafür, wie man die Ergebnisse einer einzelnen Tabellenabfrage in ein DataGridView1 (zum Hinzufügen/Bearbeiten/Modifizieren) auffüllen kann. Die meisten Beispiele sprechen über ASP.NET, was mir fehlt, das ist WinForms.

Irgendwelche Ideen?

Ich habe stieß auf andere Posten und den GetNewBindingList, aber das scheint nicht viel zu ändern.

Was bin ich (muss klar sein)?

Antwort

4

Sie können das IQueryable Ergebnis an die Datagridview nur binden, nicht sicher, warum Sie es zu einem Binding Umwandlung, gibt es einen bestimmten Grund dafür?

+2

Zweiweg Bindung bereitzustellen, so dass Änderungen in der Datagridview können benachrichtigt werden? – Kev

+0

Nun, kein Grund. Wie ich bereits erwähnt habe, bin ich 100% neu bei DataGrids, das ist ein Beispiel, das ich irgendwo in Google Land gefunden habe. : S (Aber es funktioniert nicht) –

3

Sie können sich die TableList<T> von this post - basierend auf BindingList<T>, aber mit Haken in den Datenkontext.

+0

Oh, ich habe diesen Beitrag vorher gesehen (hatte es in einem der Tabs geöffnet), ich habe gerade gemerkt, dass es dein Beitrag war! :) Wird es erneut lesen und fragen, ob ich Fragen habe. Vielen Dank. –

0

Einfach binden.

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

Keine Notwendigkeit, es in Liste zu konvertieren.

+2

Dies erlaubt keine Bearbeitung in der DataGridView. Er erwähnte "hinzufügen/bearbeiten/ändern". –

0

string = "2014.12.11"

Versuchen Sie folgendes:

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 
{ 
} 
Verwandte Themen