[vb2005]case sensitive

DerStauner

Erfahrenes Mitglied
hallo!

wie kann ich Folgendes machen:

ich habe ein TextBox und ein DataGrid. Und ich möchte, dass wenn der Benutzer den Wert eines Feldes, das auch im DataGrid zu finden ist, eingibt, dann wird die aktuelle Zeile die sein, deren Feld dem eingegebenen Wert enspricht.

Ich glaube, das nennt man case sensitive, oder?

Danke für eure Hilfe!
 
Ich glaube, das nennt man case sensitive, oder?

Zuallererst, wo hast du den das aufgeschnappt? Case sensitivity bezeichnet die Behandlung der Großschreibung bzw. Kleinschreibung.

Okay, zu deiner Frage, da ich vermute das du deine Suche mit einem Button "abschickst", sieht der Code wie folgt aus:
C#:
DataView dv;

//Hier musst du dein DataTable oder was auch immer du benutzt übergeben
dv = DeinDataTable.DefaultView;
dv.RowFilter = "[Spalte] in (" + textBox1.Text + ")";
dataGridView1.DataSource = dv.ToTable();

Wenn du bessere/andere Ergebnise erzielen willst, musst du dir die RowFilter Eigenschaft genauer anschauen.
 
nein, die Suche starte ich nicht mit einem Button, sondern ich habe es mir folgendermaßen vorgestellt:

es gibt ein TextBox, wo ein Primarkey einer Tabelle eingegeben werden muss (z. B. Belegnummer). Und bei jedem Tastendrücken springt das DataGridView zu der entsprechenden Zeile. Z. B. tippe ich "12", dann kommen die Rekords auf, deren Belegnummer mit "12" beginnt. Und wenn ich die Eingabe weiter fortsetze, z. B. mit "3", dann habe ich die Rekords vor Augen, die mit "123" beginnen.

So was möchte ich verwirklichen.
 
Achso! Naja nichts leichter als das. Du musst folgenden Code in den TextChanged-Event der Textbox reinschreiben:

C#:
DataView dv; //Hier musst du dein DataTable oder was auch immer du benutzt übergeben
dv = DeinDataTable.DefaultView;
dv.RowFilter = "Convert([Spalte], 'System.String') LIKE '" + textBox1.Text + "%'";
dataGridView1.DataSource = dv.ToTable();

Was passiert da nun genau? Du erstellst also zuerst ein DataView, damit du besser mit den Ansichten arbeiten kannst. Bei der RowFilter Übergabe, muss man etwas tricksen. Und zwar kann Like nur als string übergeben werden. Auch wenn du alles implizit/explizit konventierst, bringt das nicht zum gewünschten Ergebnis. Er wird dir folgende Fehlermeldung ausspucken:

"Die Operation 'Like' kann nicht an System.Int32 und System.String durchgeführt werden."

Das liegt daran das für diese speziellen Abfragen ein kleiner Interpreter abläuft der die Abfrage überprüft. Du musst für die Umwandlung folgendes Expression einsetzen, siehe Beispiel (Convert).

Falls du noch Fragen hast, immer her damit.
 
Zurück