J'essaie de trouver un moyen de faire quelque chose qui, selon moi, doit être possible, mais je manque juste le but - alors j'espère que quelqu'un peut me donner un J'utilise la liaison de données dans ASP.NET (viewstate désactivé - en utilisant controlstate pour quelques choses ici et là) pour rendre un répéteur (repeaterPriceClasses) qui a un répéteur dans chaque itemtemplate (repeaterPriceBands). Fondamentalement, cela rend une table sur un texte et une liste déroulante dans chaque cellule. J'essaie de trouver un moyen d'énumérer le repeaterOuter à l'intérieur du gestionnaire d'événement d'un bouton pour me donner une liste de tous les éléments liés à l'origine qui ont maintenant une liste déroulante avec une valeur de> 0, ainsi que quelle est cette valeur.Récupérer DataItem à partir de RepeaterItem après la liaison de données (pendant un gestionnaire d'événements)
public Dictionary<Price, int> SelectedPrices
{
get
{
var sel = new Dictionary<Price, int>();
foreach(RepeaterItem itemClass in repeaterPriceClasses.Items)
{
var repeaterPriceBands = itemClass.FindControl("repeaterPriceBands") as Repeater;
foreach(RepeaterItem itemBand in repeaterPriceBands.Items)
{
var context = (Price)itemBand.DataItem;
var listQty = itemBand.FindControl("listQty") as DropDownList;
if(listQty.SelectedValue.ToInt32() > 0)
{
sel.Add(context, listQty.SelectedValue.ToInt32());
}
}
}
return sel;
}
}
Maintenant, cela échoue car itemBand.DataItem est toujours NULL une fois la liaison de données terminée.
Quelle technique dois-je utiliser pour contourner ce problème?
Champ caché avec des clés primaires dans ce (pas idéal comme peut être abusé et ajoute poids à la page)
Recherche de données mises en cache originales basées sur les indices (juste semble mal)
ou autre else/better ...?
EDIT: Y at-il plus d'informations que je pouvais fournir pour aider cette obtenir une réponse?
Oui. D'accord, c'est ouvert à l'abus. Mais l'utilisation d'une variable "Hidden" (vous devrez en faire un contrôle serveur ou utiliser asp: Hidden) augmentera l'état de view de la page, le rendant ainsi un peu lourd. – Kirtan
Salut, vérifiez la réponse (balise [Modifier]). Je l'ai raffiné un peu, et j'ai pensé à une nouvelle méthode avec laquelle vous pouvez l'implémenter. Vérifiez-le et dites-moi si cela conviendra mieux ou non. Merci. – Kirtan