DataItem sur le Répéteur.Articles est toujours null

Je suis réglage de la source de données de mon relais sur une Liste (MyProducts est une classe simple, composé de seulement obtenir/setters).

Après et DataBind(), je peux voir dans le mode de débogage qui DataItem de chaque Répétition.Éléments est nulle. Lors d'une publication et d'essayer de mettre à jour MyProducts, le Répéteur.Les éléments de[n].DataItem est toujours null et je ne suis pas en mesure de lancer, de faire mon travail.

Pourquoi n'est-ce pas DataItem défini sur chaque RepeaterItem, quand je databind mon répéteur? Je ne peux pas comprendre/Google. Tous les autres aspects de mon code fonctionne correctement (sortie de données de MyProducts à aspx, en utilisant par exemple:

<asp:TextBox runat="server" id="q" Text='<%# DataBinder.Eval(Container.DataItem, "Quantity")%>'></asp:TextBox>

Plus de code:

public class MyProducts
    {
        public string Number
        {
            get; set;
        }

        public decimal Price
        {
            get; set;
        }

        public decimal Quantity
        {
            get; set;
        }

        public decimal Total
        {
            get { return Quantity * Price; }
        }
    }

La génération:

public List<MyProducts> TheProducts
{
 get { //Invoking webservice, getting response as xml and converting it to a list of MyProducts }
}

Mon contrôle de l'utilisateur:

//Bind products in cart
r.DataSource = TheProducts;
r.DataBind();
//Debugging "r.Items[n].DataItem" now shows "null", eventhough all objects has been correctly binded

Edit #2, les informations de débogage. Source de données reçoit correctement chargé, mais Répéteur.Les articles[3].DataItem est null. Il doit avoir une valeur, non?
capture d'écran


Edit #3,
Je comprends maintenant, je pensais que DataItem était toujours accessible lorsque la source de données est définie, et ne pense pas y compris le code complet (j'ai essayé d'y accéder dans le Page_Load).

Après que l'utilisateur a modifié une valeur de quantité, j'ai voulu enregistrer la nouvelle quantité d'un MyProducts. Je l'ai résolu en plaçant un hiddenfield qui contient l'id de MyProducts, de sorte que je peux manuellement le chercher et obtenir le MyProducts objet à partir de là.

Grâce à emremp, Marque Avenius et tous les autres qui se sont mobilisés.

Vous pourriez nous donner un peu de code pour travailler avec...
J'ai édité mon post et inséré plus de code. Si c'est assez de base, je ne pense pas que cela va donner des précisions, au besoin. J'ai eu "espéré" que j'ai manqué quelque chose de simple et quelqu'un pourrait il m'. Je trouve très curieux que je suis en mesure de lier MyProduct-objets, mais DataItem est nul ...
Qu'essayez-vous de réaliser ici? Est-ce que votre "Quantité" get lié à la répétition?
Oui, la Quantité est une propriété de MyProducts qui obtient lié à une zone de texte, de sorte que l'utilisateur peut le modifier. Cela fonctionne comme prévu. L'utilisateur doit être en mesure de modifier la quantité, puis cliquez sur "Enregistrer" et le code de la boucle.r.Éléments, l'enregistrement de la quantité pour chaque objet MyProducts
Essayez juste d' <%#Eval("Quantité")%>

OriginalL'auteur Certs | 2010-10-08