LINQ to SQL a DataView   otázka

VB.NET, LINQ, WinForms

Dobrý den, jde nějak dostat výsledek dotazu do DataView? Zajímá mě to kvůli filtrování DataGridView.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

DataGridView se dá velmi dobře filtrovat pomocí BindingSource, pokud používáte Data Binding.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tak jsem to vyzkoušel filtrování přes BindingSource, ale zřejmě dělám něco špatně, protože mě to nefunguje. Mohl byste mě ještě trochu postrčit?

     Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
        Try
            Dim filter As String = "Jmeno LIKE '" & TextBox1.Text & "%'"

            BindingSource1.Filter = filter

        Catch ex As Exception
            Debug.Print(ex.Message)
        End Try
    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim db As New DBPins("Data Source=C:\Test.sdf")

        Dim zamestnanci = From z In db.Zamestnanci Select z


        BindingSource1.DataSource = zamestnanci

        DataGridView1.DataSource = BindingSource1
    End Sub

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Chybu máte ve filtrovacím výrazu, zástupný znak pro libovolné množství libovolných znaků totiž není % jako v T-SQL, nýbrž *. Správný filtrovací výraz by měl vypadat takto:

Dim filter = "Jmeno LIKE '*" & TextBox1.Text & "*'"

"Jmeno" také musí být přesný název sloupce v tabulce, která slouží jako zdroj dat pro BindingSource.

Více o syntaxi filtrovacího výrazu:

http://msdn.microsoft.com/en-us/library/...

nahlásit spamnahlásit spam 0 odpovědětodpovědět

tak to mi bohužel taky nefunguje. Předpokládám že to bude tím, že zdroj BindingSource není tabulka nebo dataset, ale linq dotaz

nahlásit spamnahlásit spam 0 odpovědětodpovědět

A proč filtrovat, když můžete vytáhnout přímo data které potřebujete ? např.

Dim zamestnanci = From z In db.Zamestnanci.ToList  _
                  Where z.Jmeno.StartsWith(TextBox1.Text) _
                  Select z

DataGridView1.DataSource = zamestnanci

Netestoval jsem to, ale mělo by to být funkční

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

mě to nepřijde moc vhodný, při každý změně textboxu dělat novej select

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Vážně mi nikdo nedokážete poradit?

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:  
Heslo:  

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback