2008-08-15 19 views
1

Ich komme aus einem Rails-Hintergrund und einige Arbeit an einem ASP.NET-Projekt (nicht ASP MVC). Neue Frage: Was ist der einfachste Weg, um einen benutzerdefinierten Editor für eine Tabelle von Datensätzen zu erstellen?Die beste Methode zum benutzerdefinierten Bearbeiten von Datensätzen in ASP.NET?

Zum Beispiel: Ich habe eine Reihe von Datenzeilen und wollen auf jede der „Kategorie“ Feld ändern - vielleicht ein Dropdown, vielleicht einen Link, vielleicht der Benutzer es in

In Rails, ich. Itre über die Zeilen, um eine Tabelle zu erstellen, und würde für jede Zeile ein Formular haben. Das Formular würde ein Eingabefeld oder eine Dropdown-Liste haben und die Daten an einen Controller senden wie "/ item/edit/15? Category = foo", wobei 15 die itemID und die neue Kategorie "foo" war.

Ich bin neu in dem ASP.NET-Modell und bin mir nicht sicher von der "richtigen" Möglichkeit, dies zu tun - nur die einfachste Möglichkeit, die neuen Daten & speichern Sie es ab. Würde ich ein benutzerdefiniertes Steuerelement erstellen und es an jede Zeile anhängen? Jede Hilfe wird geschätzt.

Antwort

2

Sie können heute wirklich schummeln und werfen Sie einen Blick auf die neuen dynamischen Daten, die mit .NET 3.5 SP1 kommt. Scott Guthrie hat einen Blog-Eintrag Demonstrieren, wie schnell und einfach es für Sie hier fließen werden:

http://weblogs.asp.net/scottgu/archive/2007/12/14/new-asp-net-dynamic-data-support.aspx

Ohne zu bekommen, dass Schneide, würde ich den XSD-Generator verwenden, um eine stark typisierte Datenmenge, die zusammenfällt zu erzeugen mit dem fraglichen Tisch. Dadurch wird auch der TableAdapter generiert, mit dem Sie alle Ihre CRUD-Anweisungen ausführen können.

Von dort binden sie an ein Datagrid und nutzen alle Standardvorlagen/Ereignisse mit daran beteiligt, wie EditIndex, SelectedIndex, RowEditing, RowUpdated usw.

Ich habe seit dem frühen 1.0 dies zu tun Tage von .NET und diese Art von Funktionalität wurde mit jedem Update des Frameworks immer mehr gestrafft.

EDIT: Ich möchte dem Matt Berseth Blog auch kurz nicken. Ich habe eine Menge seiner Sachen seit einer Weile verfolgt und es ist großartig!

0

Es gibt ein paar Kontrollen, die dies für Sie tun, mit unterschiedlichen Komplexitätsstufen, abhängig von ihrer relativen Flexibilität.

Der traditionelle Weg, dies zu tun wäre das DataGrid-Steuerelement, das Ihnen ein Tabellenlayout gibt. Wenn Sie etwas flexibler gestalten möchten, verfügen die Steuerelemente DataList und ListView über eine integrierte Unterstützung für das Bearbeiten, Einfügen oder Löschen von Feldern.

Überprüfen Sie Matt Berseth's blog für einige hervorragende Beispiele für asp.net Kontrollen in Aktion.

0

Danke für die Antworten Jungs. Es sieht so aus, als ob das Anpassen des DataGrid der richtige Weg ist. Für alle ASP.NET-Neulinge, hier ist, was ich tue

Dies erstellt ein Datagrid. Wir können es dann binden an eine Datenquelle (Datatable in meinem Fall) und verwenden Dinge wie

foreach (DataGridItem item in this.GridView1.Items) 
{ 
    DropDownList categoryListDropdown = ((DropDownList)item.FindControl("categoryListDropdown")); 
    categoryListDropdown.Items.AddRange(listItems.ToArray()); 
} 

das intial Dropdown im Datenraster zu füllen. Sie können auch auf item.Cells [0] .text zugreifen, um in diesem Fall die RuleID zu erhalten.

Hinweise für mich selbst: Das ASP.NET-Modell macht alles in der Codebehind-Datei. Auf einer höheren Ebene können Sie immer durch GridView1 iterieren.Elemente zum Abrufen jeder Zeile und item.findControl ("ControlID") zum Abrufen des Werts, der in jedem Element gespeichert ist, z. B. nach dem Drücken einer Schaltfläche "Aktualisieren".

Verwandte Themen