Derzeit kopiere ich die Zeile in eine leere Datentabelle und binde diese, aber es gibt sicher einen besseren Weg...
Antworten
Zu viele Anzeigen?Sie brauchen keine Datentabelle zum Binden - Sie brauchen nur etwas wie eine Liste / Aufzählung. Zum Beispiel, wenn Sie die Zeilennummer kennen:
DataRowView row = dt.DefaultView[1]; // second row
detailsView1.DataSource = new DataRowView[] {row};
detailsView1.DataBind();
Beachten Sie, dass wir Folgendes verwenden müssen DataRowView
(anstelle von DataRow
), um die Nur-Laufzeit-Eigenschaften (d.h. die Daten von Spalten) zu erhalten. Wenn Sie eine DataRow
Dieser Ansatz könnte leicht in eine Dienstprogramm-Methode, z. B. eine Erweiterungsmethode, verpackt werden:
public static DataRowView[] ForBinding(this DataRow row)
{
foreach (DataRowView rowView in row.Table.DefaultView)
{
if (ReferenceEquals(rowView.Row, row))
{
return new DataRowView[] { rowView };
}
}
throw new ArgumentException("Row not found in the default view", "row");
}
mit:
detailsView1.DataSource = row.ForBinding();
detailsView1.DataBind();
Canavar
Punkte
46926