2016-05-06 10 views
0

Ich habe eine DataTable, in der eine der Spalten eines bestimmten Typs von Objekt ist, sagen TypOf (A) - A ist meine benutzerdefinierte Klasse. Die Klasse A hat eine Texteigenschaft und andere Eigenschaften wie bool. Aus Benutzer- oder externem Code bekomme ich nur den Textwert, der in RowFilter zum Filtern verwendet werden soll, im folgenden Beispiel werde ich "cat" als meinen Filter verwenden. Wie erstellt man den RowFilterExpression?DataView Rowfilter Ausdruck C#

Der obige Ausdruck funktioniert nicht, weil es versucht, es mit dem Objekt in Zelle zu vergleichen. Wie filtere ich die erste Zeile mit diesem Filterausdruck?

Jede Hilfe wird geschätzt.

Antwort

-2

zwingendes Objekt ToString Methode wie folgt funktionieren:

class A 
{ 
    public string Text { get; set; } 
    public bool isReadonly { get; set; } 

    public override string ToString() 
    { 
     return this.Text; 
    } 
} 

und Sie verwenden können:

dataView.RowFilter = string.Format("Convert([col1], 'System.String') = '{0}'", filter); 
+0

Ich teste es Code, es funktioniert gut –

+0

Es funktioniert nur, wenn Sie auch die ToString-Methode aus der anderen Antwort implementieren. Dieses kompiliert und führt aus, aber es gibt tatsächlich keine Ergebnisse zurück. – CathalMF

+0

Danke für remak, du hast recht, ich habe meinen Code geändert. –

2

Versuchen überwiegende ToString Methode in Ihrem Objekt und dann sollen Sie Ihr aktueller Filtercode

class A 
{ 
    public string Text{get;set;} 
    public bool isReadonly {get;set;} 

    public override string ToString() 
    { 
     return this.Text; 
    } 
} 
+1

das funktioniert bei meinen Tests. – CathalMF

+0

Die überschriebene ToString war immer in meinen Tests, aber es half nie bei der Filterung der Trick war im rowFilter Ausdruck. Trotzdem danke. – SandhraPrakash

+0

Aber der Code, den Sie gepostet haben, hat die 'ToString' Methode nicht überschrieben, weder Sie noch haben Sie erwähnt, dass Sie es in Ihren Tests haben –