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.
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
Vous devez vous connecter pour publier un commentaire.
Dans quel but avez-vous besoin de l'ensemble de la liste? Une fois que la page est affichée, la liste à laquelle le relais est lié n'est pas conservé. Si vous avez besoin de le garder, vous pouvez le mettre dans la session et de les récupérer si nécessaire (sur Page_Load, par exemple):
Vous pouvez également mettre ceci dans votre getter (cochez la première session, et d'invoquer le service web si nécessaire):
OriginalL'auteur Mark Avenius
http://www.netnewsgroups.net/aspnet/t4049-question-repeater-dataitem.aspx
"DataItem est là uniquement pour l'élément de processus de création, c'est-à ItemCreated
et ItemDataBound méthodes (ItemCreated quand il se produit en raison d'appeler à
DataBind)."
vous pouvez ajouter ItemDataBound méthode et essayer d'obtenir DataItem.
Je veux dire r_ItemDataBound(Object Sender, RepeaterItemEventArgs e) méthode n'est pas une nouvelle ItemDataBound méthode.
OriginalL'auteur emremp