DropDownList à l'intérieur de Répétition: Comment gérer SelectedIndexChange et obtenir DataItem?
Je suis en train de monter un DropDownList avec AutoPostBack à l'intérieur d'un Répéteur.
(Le ListItems sont remplies sur la répétition du ItemDataBound)
<asp:Repeater ID="rptWishlist" OnItemCommand="rptWishlist_ItemCommand" onItemDataBound="rptWishlist_ItemDataBound" runat="server">
<ItemTemplate>
...
<asp:DropDownList ID="ddlSize" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ddlSize_SelectedIndexChanged" />
...
-
Tout d'abord, cette fonction n'a même pas tiré sur le post de retour
protected void ddlSize_SelectedIndexChanged(object sender, EventArgs e)
{
//This function is never called
}
-
Comment puis je obtenir le DataItem après je le faire fonctionner?
Je fais mal?
Vous en remercie d'avance.
OriginalL'auteur Aximili | 2012-03-01
Vous devez vous connecter pour publier un commentaire.
Pour enregistrer la dropdownlist pour la publication, ajoutez le code suivant:
Et dans votre fichier aspx, ajoutez ceci à votre répéteur balisage:
Puis, dans votre ddlSize_SelectedIndexChanged fonction, vous pouvez accéder au contrôle parental comme ceci:
Espère que cette aide.
DataItem est uniquement disponible dans la ItemCreated et ItemDataBound méthodes. Je pense que ce que vous avez à faire est d'ajouter un peu de contrôle à la répétition que vous pouvez utiliser pour faire référence à l'élément que vous souhaitez récupérer.
Pourquoi ne pas
OnSelectedIndexChanged="ddlSize_SelectedIndexChanged"
?OriginalL'auteur jmaglio
Je ne vois pas de problème avec la portion de code que vous avez posté.
Appelez-vous DataBind() sur votre relais quand IsPostBack est vrai, et pendant PageLoad ?
Si oui, vous allez perdre le SelectedIndexChanged sur vous DDLs
Vous devez stocker les Id, par exemple dans les valeurs ou HiddenField, à charge spécifique DataItems pendant le traitement de publication (ListView a DataKey à cet effet)
Comme une ligne directrice générale :
si vous ne les deux points ci-dessus, vous ne serez pas en mesure d'utiliser DataItems dans
item_created (comme votre DataItems sera disponible uniquement lorsque vous appelez
DataBind())
OriginalL'auteur jbl
Si vous voulez juste pour tirer le OnSelectedIndexChanged, c'est comment il devrait ressembler à:
Page.aspx - Source
Page.aspx.cs - Code-behind
Et c'est tout. Votre événement sera appelé maintenant.
OriginalL'auteur ankit rajput
Ici, la réponse est bonne, mais manque un crucial vérifier. Si vous vous demandez pourquoi vous êtes obtenir de l'objet de référence non définie à une instance d'un objet erreurs, il est important de noter que le répéteur va créer son en-TÊTE d'abord avant tout les éléments de données.
Effectuer cette vérification:
OriginalL'auteur elaw7
Essayer cette
OriginalL'auteur Srinivas