Wenn ich eine Liste < Person> wo Person durch die Klasse definiert istWie binde ich einen Repeater an eine Liste <Person>, um auch die gebundenen Elemente zu aktualisieren? (2-Wege)
class Person
{
string Forename
{
get;set;
}
string Surname
{
get; set;
}
}
Und ich es zu einem ASP-Repeater-Steuerelement binden, die wie folgt aussieht:
<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
<asp:Label ID="lblForename" runat="server" Text="Forname" AssociatedControlID="txtForename" />
<asp:TextBox ID="txtForename" runat="server" Text='<%# ((Person)Container.DataItem).Forename %>' />
<br />
<asp:Label ID="lblSurname" runat="server" Text="Forname" AssociatedControlID="txtSurname" />
<asp:TextBox ID="txtSurname" runat="server" Text='<%# ((Person)Container.DataItem).Surname %>' />
<br />
</ItemTemplate>
</asp:Repeater>
Was ist der beste Weg, um die Daten, die der Benutzer eingibt, wieder in die Objekte zu bekommen?
Ich dachte, dass der ganze Punkt der Datenbindung war, dass dies effektiv für Sie behandelt wurde, aber wenn ich die Repeater1.Items-Auflistung inspiziere, werden keine Änderungen vorgenommen. Muss ich Code zu schreiben, etwas entlang der Linien von
//This is only intended to be pseudo code
for each item in Repeater1.Items
((Person)item.DataItem).Forename = item.FindControl("txtForname").Text;
end for
zu tun Wenn das der Fall ist, warum ist die DataItem Eigenschaft immer leer?
Zusätzliche Informationen:
Ich bin schon rufen Code die die Wirkung von
this.Repeater1.DataSource = this.PersonList;
this.Repeater1.DataBind();
Ich habe versucht, mit Bind("Forename")
, aber dies scheint nicht die Informationen aus dem Text zurück zu holen in das Objekt, muss ich das manuell tun?
Nicht die Antwort, auf die ich gehofft hatte, aber es scheint, dass Sie Recht haben. – ilivewithian