DropdownList.selectedIndex toujours 0 (oui, je dois !isPostBack)
(Faites défiler vers le bas de post pour trouver une solution.)
Obtenu un asp.net page qui contient un
Datalist. À l'intérieur de ce datalist, il y
est un modèle contenant une
dropdownlist et à chaque fois que l'
datalist est rempli avec un élément, un
ItemCreatedCommand est appelé. L'
itemCreatedCommand est responsable de
la liaison de données de la liste déroulante.
Je pense que le problème réside ici, que
Je suis en utilisant ItemCreatedCommand à
remplir - mais les choses étranges
c'est que si je choisis la couleur "verte",
la page autopostback, et je vais
voir que le menu déroulant est toujours sur le
de couleur verte, mais lorsque j'essaie d'utiliser
c'est SelectedIndex, j'ai toujours 0...
protected void DataListProducts_ItemCreatedCommand(object
source, DataListItemEventArgs e)
var itemId = (String)DataListProducts.DataKeys[e.Item.ItemIndex];
var item = itemBLL.GetFullItem(itemId);
var DropDownListColor = (DropDownList)e.Item.FindControl("DropDownListColor");
//Also tried with :
//if(!isPostBack) {
DropDownListColor.DataSource = item.ColorList;
DropDownList.Color.Databind();
//} End !isPostBack)
Label1.test = DropDownListColor.SelectedIndex.toString();
//<- THIS IS ALWAYS 0! *grr*
J'ai réduit un peu le code pour
la visualisation, mais encore, vous pouvez voir ce que
Je suis en train de faire 🙂 La raison pour
pourquoi je fais cela, et de ne pas déclarer
la source de données pour les couleurs directement
j'ai aspx-page, c'est que j'ai besoin d'exécuter un
test si(showColors), mais je ne veux pas
pour éviter d'encombrer la page html avec le code
que je me sens devrait être dans le code
derrière-fichier.
EDIT: Après avoir tenté de modifier
SelectedIndexChange - je vais avoir un
"logique" de la confusion dans ma tête maintenant
comment suis-je modifier les éléments à l'intérieur de la
datalist? Depuis, pour autant que je sais - je
n'avons aucun moyen de vérifier qui de
les éléments de la datalist ce
particulier dropdownlist appartient à...
Ou? Je vais essayer un peu de moyens
et voir ce que j'arrive à la fin 😉 Mais ne
merci de poster vos pensées sur cette
question 🙂
SOLUTION:
Soit la bulle de l'événement pour ItemCommand, ou de traiter l'événement, obtenir les expéditeurs parent(qui est un datalistItem et manipuler des éléments là-dedans.
protected void DropDownListColor_SelectedIndexChanged(object sender, EventArgs e)
{
DropDownList dropDownListColor = (DropDownList)sender;
DataListItem dataListItem = (DataListItem)dropDownListColor.Parent;
var item = items[dataListItem.ItemIndex];
var color = item.ItemColor[dropDownListColor.SelectedIndex];
var LabelPrice = (Label)dataListItem.FindControl("LabelPrice");
LabelPrice.Text = color.Price;
}
Eh bien, pour être honnête, je pense que je vais abandonner le "encombrent pas le html"fichier, depuis que je l'ai cherché pendant des heures, et Il semble qu'il n'y a aucune facilité de mise en œuvre de ce dont j'ai besoin. Mais la raison était de maintenir un strict speration de code et de conception. (Maintenant, je dois ajouter une si-vérifier dans le aspx)
OriginalL'auteur Israr Khan | 2008-11-23
Vous devez vous connecter pour publier un commentaire.
Lorsque le DataList est liée à des données, le AutoPostBack n'a pas encore été traitée, c'est à dire les valeurs de la ItemCreated événement sont encore les valeurs d'origine.
Vous devez gérer la SelectedIndexChange événement de la liste de contrôle.
OriginalL'auteur devio
Concernant votre 2ème question:
Je vous suggère de retirer le AutoPostBack à partir de la liste déroulante ajouter un bouton "Update", et de mettre à jour les données dans l'événement Click du bouton.
De la touche maintenez la touche Commande enfoncée et CommandArgument valeurs, de sorte qu'il est facile à associer avec un enregistrement de base de données.
OriginalL'auteur devio
certains MSDN liens avec C# exemples sur le bouillonnement
http://msdn.microsoft.com/en-us/library/system.web.ui.control.onbubbleevent.aspx
http://msdn.microsoft.com/en-us/library/aa719644(SV.71).aspx
http://msdn.microsoft.com/en-us/library/aa720044(SV.71).aspx
OriginalL'auteur devio
Merci pour votre solution
OriginalL'auteur user4132142