Rufen Sie die DefaultView DataRowView aus einer DataRow ab
-
09-06-2019 - |
Frage
Hier ist die Situation:Ich muss ein WPF binden FixedPage
gegen a DataRow
.Bindungen funktionieren nicht dagegen DataRows
;sie arbeiten dagegen DataRowViews
.Ich muss dies so allgemein wie möglich tun, da ich nichts darüber weiß und keine Kontrolle darüber habe, was darin enthalten ist DataRow
.
Was ich brauche, ist in der Lage zu sein, eine zu bekommen DataRowView
für ein gegebenes DataRow
.Ich kann das nicht verwenden Find()
Methode auf der DefaultView
denn dafür ist ein Schlüssel erforderlich und es gibt keine Garantie dafür, dass die Tabelle über einen Primärschlüsselsatz verfügt.
Hat jemand einen Vorschlag, wie man das am besten umgehen kann?
Lösung
Nicht gerade ein sexy Stück Code, aber es scheint keine automatisierte Möglichkeit zu geben, die Zeile zu finden, ohne nur die Tabelle zu durchlaufen.
DataRowView newRowView = null;
foreach (DataRowView tempRowView in myDataTable.DefaultView)
{
if (tempRowView.Row == rowToMatch)
newRowView = tempRowView;
}
if (newRow != null)
UseNewRowView(newRowView);
else
HandleRowNotFound();
Andere Tipps
row.Table.DefaultView[row.Table.Rows.IndexOf(row)]
Das ist eine gute Antwort.Wenn Sie sich jedoch in dieser Situation befinden, sollten Sie darüber nachdenken, mehr über DataViews und deren Verwendung zu erfahren und dann Ihren Code so umzugestalten, dass er ansichtszentriert statt tabellenzentriert ist.