DataGridView select   zodpovězená otázka

VB.NET, ADO.NET, WinForms, Databáze

Zdravím všechny nadšence, potřeboval bych radu. Mám DataGridView který mi po otevření Formu načte celou DB. Potřeboval bych ale, abych si poté mohl zobrazit jen některá data. Např když do textboxu napíšu Jan, tak aby se mi zobrazily jen jména kde je Jan. Nějak si s tím nevím rady.

Používám SQL CE, VB.NET a tabulku plním takto:

Try
    Me.ZboziTableAdapter.FillBy(Me.KasaDataSet.Zbozi)
Catch ex As System.Exception
    System.Windows.Forms.MessageBox.Show(ex.Message)
End Try

Díky za rady...

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

Dataset není slovo Boží, a tudíž může být měněn ;-). Třeba tak, že data vyberete s pomocí klauzule where znovu z databáze podle toho, co máte v tom textovém poli vybráno.

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

Tak to by bylo skutečně extrémně pomalé a náročné. Ideální řešení je použít BindingSource jako zdroj dat pro DataGridView a u tohoto BindingSource filtrovat pomocí vlastnosti Filter. Zdroj dat pro BindingSource může být cokoliv, v tomto případě DataTable.

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

A co použít DataView, kde existuje RowFilter, kterém umůžete nastavit vlastnost třeba "JMENO LIKE JAN" :-) Jako zdroj dat do toho Dataview použijete tabulku z datasetu, kterou potřebujete...

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

To je také pomalé a neefektivní, když v tabulce bude milion záznamů, vytáhnou se z databáze všechny a filtrovat se budou až na klientovi.

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

V případě filtrování pomocí BindingSource.Filter (má stejnou syntaxi a řekl bych že i funguje stejně jako RowFilter) se filtrování také provádí na klientovi a i při velkém množství záznamů je výsledek uspokojivý. Zatím jsem nenašel vhodnější postup jak rychle, nenáročně a uživatelsky přívětivě filtrovat data.

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

Teď si tím nejsem jistý, ale tak nějak instuitivně bych řekl, že podmínka z BindingSource.Filter se už překládá do dotazu, což by vysvětlovalo, proč je to rychlé. RowFilter u GridView se do SQL nepřekládá, filtruje se až na klientovi. Ale fakt nevím.

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