2009-06-16 14 views
6

Nigdy nie używałem datagridów i takich, ale dzisiaj natknąłem się na prosty problem i zdecydowałem się na "databind" rzeczy, aby zakończyć to szybciej, jednak odkryłem, że to nie robi " t działa tak, jak się spodziewałem.Najprostszy sposób użycia DatagridView z Linq do SQL

I mimo, że robi coś tak prostego jak:

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

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

Następnie za pomocą tej listy w DataGridView1.DataSource było wszystko, co potrzebne, jednak bez względu na to jak bardzo mi google, nie mogę znaleźć przyzwoity przykład na to, jak zapełniać (do dodawania/edycji/modyfikować) wyniki pojedynczej kwerendy tabeli do DataGridView1. Większość próbek mówi o ASP.NET, którego mi brakuje, to jest WinForm.

Wszelkie pomysły?

Natknąłem się na inne posty i GetNewBindingList, ale wydaje się, że niewiele się to zmieniło.

Czego mi brakuje (musi być oczywiste)?

Odpowiedz

4

Możesz po prostu powiązać wynik IQueryable z DataGridView, nie wiesz, dlaczego przekształcasz go w BindingList, czy istnieje ku temu konkretny powód?

+2

zapewnienie dwóch sposób wiązania tak, że zmiany w DataGridView mogą zostać zgłoszone? – Kev

+0

Cóż, bez powodu. Jak już wspomniałem, jestem w 100% nowy w DataGrids, to przykład, który znalazłem gdzieś w Google Earth. : S (Ale to nie działa) –

3

Możesz rzucić okiem na TableList<T> z this post - w oparciu o BindingList<T>, ale z hakami do kontekstu danych.

+0

Och, widziałem już ten post wcześniej (gdyby był otwarty w jednej z kart), po prostu zdałem sobie sprawę, że to był twój post! :) Przeczytam ponownie i zapytam, czy mam pytania. Dzięki. –

0

Po prostu to wiąż.

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

Nie trzeba konwertować do listy.

+2

To nie pozwala na edycję w DataGridView. Wspomniał o "dodaj/edytuj/modyfikuj". –

0

String = "11.12.2014"

Spróbuj tego:

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 
{ 
} 
Powiązane problemy