4 Stimmen

Was ist der einfachste Weg, um eine einzelne Zeile einer Datentabelle zu einem detailsview in C# asp.net binden?

Derzeit kopiere ich die Zeile in eine leere Datentabelle und binde diese, aber es gibt sicher einen besseren Weg...

5voto

Marc Gravell Punkte 970173

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();

1voto

Canavar Punkte 46926

Ja, das ist der einfachste Weg :)

IMHO, wenn Sie nur 1 Feld anzeigen möchten, könnten Sie Ausgabeparameter verwenden, aber wenn Sie mehr als ein Feld in einer Detailansicht anzeigen, ist dies der einfachste Weg.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X