Comment lier un répéteur à une liste & lt; Person & gt; mettre également à jour les éléments liés? (2 voies)

Si j'ai une Liste < Personne > où la personne est définie par la classe

class Person
{
   string Forename
   {
      get;set;
   }
   string Surname
   {
      get; set;
   }
}

Et je la lie asp un contrôle repeater qui ressemble à ceci:

<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>

Quelle est la meilleure façon d'obtenir les données que l'utilisateur tape dans le dos en objets?

J'ai pensé que le point de l'ensemble de la liaison de données est qu'il a effectivement pris en charge pour vous, mais quand je passe en revue les Repeater1.Collection d'éléments, il n'y a pas de changements. Dois-je écrire du code pour faire quelque chose le long des lignes de

//This is only intended to be pseudo code
for each item in Repeater1.Items
    ((Person)item.DataItem).Forename = item.FindControl("txtForname").Text;
end for

Si c'est le cas, pourquoi est-DataItem propriété toujours vide?

Informations supplémentaires:

Je suis déjà le code appelant, l'effet de la

this.Repeater1.DataSource =  this.PersonList;
this.Repeater1.DataBind();

J'ai essayé d'utiliser Bind("Forename")mais cela ne semble pas apporter de l'info de la zone de texte nouveau dans l'objet, dois-je le faire manuellement?

source d'informationauteur ilivewithian | 2009-05-14