Entwickler-Ecke

C# - Die Sprache - RowFilter mit variabler Spalte und Zeile


pepe-je - Sa 27.08.11 12:43
Titel: RowFilter mit variabler Spalte und Zeile
Ich habe ein Problem mit dem RowFilter. Wenn ich bestimmte Werte für Spalte und Zeile einsetze, klappt es einwandfrei. Ab er ich möchte mit variablen Spalten und Zeilen arbeiten, speziell mit Knoten eines TreeViews.
Ich habe das so geschrieben;
Code:

C#-Quelltext
1:
2:
3:
string col = parentNode.Value;
string rw = selectedNode.Value;
dv.RowFilter = "col = rw";


Aber es kommt die Fehlermeldung "Spalte [col] nicht gefunden". Was habe ich falsch gemacht?
Kann mir jemand helfen?
Schon jetzt vielen Dank
Peter

Moderiert von user profile iconTh69: Titel geändert: RowFiler->RowFilter


Kha - Sa 27.08.11 13:01

Denk nochmal drüber nach:

C#-Quelltext
1:
2:
3:
string col = "foo";
string rw = "bar";
Console.WriteLine("col = rw"); // erwartet: "foo = bar"

Was ist der Fehler, wie kannst du ihn beheben?


pepe-je - Sa 27.08.11 15:44

Hallo, Kha,

in Deinem Beispiel muß es natürlich

C#-Quelltext
1:
Console.WriteLine(col  + " =" +  rw);                    

heißen.

Aber die Sysntax von RowFilter sieht so aus

C#-Quelltext
1:
RowFilter rf = "Spaltenname = 'Zeilenname'";                    

Für eine spezielle Spalte und Zeile also so

C#-Quelltext
1:
RowFilter rf = " Name = 'Max'";                    


Dia analoge Lösung zu oben

C#-Quelltext
1:
2:
3:
string col = parentNode.Value;
string rw = selectedNode.Value;
dv.RowFilter = " col ' +' rw ";

klappt nicht


Kha - Sa 27.08.11 16:03

user profile iconpepe-je hat folgendes geschrieben Zum zitierten Posting springen:
in Deinem Beispiel muß es natürlich

C#-Quelltext
1:
Console.WriteLine(col  + " =" +  rw);                    

heißen.
Dann sollte dir klar sein, dass dein Code ebenso wenig Sinn macht wie meiner: Wie soll der Inhalt von col in den String finden? Meinetwegen noch einmal mit Quotes:

C#-Quelltext
1:
Console.WriteLine("col = 'rw'"); // erwartet: "foo = 'bar'"                    


pepe-je - Sa 27.08.11 17:33

Für Console.WriteLine ist

C#-Quelltext
1:
2:
3:
string col = "foo";
string rw = "bar";
Console.WriteLine(col '=' rw); // erwartet: "foo = bar"

richtig. Man erhält das erwartete Ergebnis

Die Schreibweise

C#-Quelltext
1:
2:
3:
string col = "foo";
string rw = "bar";
Console.WriteLine("col = rw");


ergibt nicht das erwartete Ergebnis

Im Falle von RowFilter gehen beide Varianten nicht, weil offenbar eine andere Syntax als bei Console.WriteLine gefordert wird.


Th69 - Sa 27.08.11 17:46

Hallo pepe-je,

du meinst wohl

C#-Quelltext
1:
2:
3:
col + '=' + rw
// bzw.
col + "=" + rw

(ansonsten kompiliert es ja nicht ohne Fehler).
Und außerdem hattest du das doch schon vorher als Antwort auf Kha gepostet.

Bei Strings im RowFilter müssen aber die einfachen Anführungsstriche (im String selber) stehen, d.h.

C#-Quelltext
1:
col + "='" + rw + "'"                    

Darauf hättest du aber auch nach Kha's zweitem Posting kommen können.
So, nun sollte aber dieser Thread damit beendet sein...


pepe-je - Sa 27.08.11 18:16

Euch beiden vielen Dank für Eure Mühe.
Peter