Se ho un elenco < persona> dove persona è definita dalla classeCome si associa un ripetitore a un elenco <Person> per aggiornare anche gli elementi associati? (2 vie)
class Person
{
string Forename
{
get;set;
}
string Surname
{
get; set;
}
}
E io associarlo a un controllo ripetitore asp che assomiglia a questo:
<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>
Qual è il modo migliore per ottenere i dati che l'utente digita di nuovo negli oggetti?
Ho pensato che l'intero punto di collegamento dei dati era che questo è stato effettivamente gestito per voi, ma quando ispeziono la collezione Repeater1.Items, non ci sono modifiche apportate. Devo scrivere il codice per fare qualcosa sulla falsariga di
//This is only intended to be pseudo code
for each item in Repeater1.Items
((Person)item.DataItem).Forename = item.FindControl("txtForname").Text;
end for
Se questo è il caso, perché è la proprietà DataItem sempre vuota?
Ulteriori informazioni:
sto già chiamando il codice e l'effetto della
this.Repeater1.DataSource = this.PersonList;
this.Repeater1.DataBind();
Ho provato con Bind("Forename")
, ma questo non sembra portare le informazioni dal TextBox posteriore nell'oggetto, devo farlo manualmente?
Non è la risposta che speravo, ma sembra che tu abbia ragione. – ilivewithian