Obtenez de l'index en cours dans un ASP.Net 2.0 contrôle Repeater
Peut-être que c'est quelque chose de très facile à faire, mais jusqu'à présent, il me prend tous les jours pour faire quelque chose de travail.
J'ai un répéteur rempli d'une table. Chaque ligne de la répétition a un ensemble de contrôles. Le plus important d'entre eux est une liste déroulante avec AutoPostback = true.
Cette ddl a publication (postback) lorsque l'utilisateur modifie l'indice choisi afin que je puisse masquer/afficher les commandes à l'intérieur de la ddl.
Le problème est que lorsque l'utilisateur modifie l'index sélectionné dans le ddl et le contrôle de la publication, dans le côté serveur, je ne peux pas obtenir l'index de la ligne qui contient le ddl qui fait de la publication.
Espère que c'est assez clair et que quelqu'un pourra m'aider ici.
Merci!
EDIT:
Peut-être que c'est quelque chose qui n'était pas assez clair: quand je place un contrôle ID="ddlSomething" à l'intérieur d'un ItemTemplate dans un répéteur, et j'ai 5 lignes dans la source de données, je vais avoir 5 lignes dans la répétition avec 5 ddl avec le même id (sur le côté serveur, côté client sera quelque chose comme "ctl01$ddlSomething", "ctl02$ddlSomething".
Mon problème est que lorsque la ddl de publication, je ne sais pas laquelle de ces 5 (par exemple) ddl est celui qui fait de la publication, parce que juste à la recherche à la Demande.Variables de formulaire, je peux voir que le contrôle "ddlSomething" fait.
OriginalL'auteur Sebastian | 2009-08-31
Vous devez vous connecter pour publier un commentaire.
Essayer:
voir ma réponse révisée.
Merci beaucoup Rex M, ce qui semble être la meilleure chose à faire!
OriginalL'auteur Rex M
Je peut ou peut ne pas être hors de la marque ici Sebastian, mais je crois que vous êtes en train de faire des bulles un événement.
Par exemple, à partir de votre explication, je suis sous l'impression que vous êtes en train de faire quelque chose comme:
Pour attraper un événement à partir de l'intérieur de la répétition, vous pouvez utiliser l'attribut "OnItemCommand", c'est à dire:
Dans votre code derrière, vous êtes maintenant en mesure de faire ce qui suit:
J'espère que je n'ai pas baissé la mauvaise route ici, mais je pense que c'est quelque chose de ce que vous êtes chasse pour.
EDIT:
Pour ajouter un petit commentaire ici, "e.Article" ci-dessus est la ligne qui a pour votre événement a été déclenché à partir de. Donc, vous avez accès à tous les autres contrôles de la ligne, et pas seulement votre dropdownlist.
OriginalL'auteur Alexis Abril
Dans un FormView vous pouvez peut-être qu'il va travailler dans les répéteurs ainsi:
Dans le DDL balisage HTML ajouter un attribut pour l'id de la DDL élément:
Dans la publication de l'élément attraper ID:
EDIT: Si vous avez une table Employés avec employee_name, employee_type et employee_id
Vous pourriez avoir arepeater qui imprime le nom de l'employé et l'employé type type d'employé est une DLL à temps Plein, à temps partiel, etc.
Vous pouvez ajouter cette manière déclarative pour le balisage de la DDL:
et dans le DDL de publication:
MyID est votre propre attribut HTML. Il n'est pas défini n'importe où, mais dans votre balisage. Gardez à l'esprit que, bien que cette solution permettrait de travail, vous aurez les erreurs de validation HTML comme conséquence des pertes d'attribut. Rien de tapage sur.
Je veux dire, où est "MyID" dans le DataItem défini? MyID doit être un membre de DataItem pour la fonction Eval() pour se lier à elle.
MyID est une colonne qui est retourné à partir de votre requête SQL à la base de données. Je peux être n'importe quel identificateur d'utilisateur pour vos données.
Ajout de quelques modifications pour plus de clarté
OriginalL'auteur Jay
La répétition elle-même ne peut pas vous dire laquelle le contrôle est sélectionné, parce que le modèle d'élément que vous spécifiez pourrait contenir toute combinaison de contrôles et il pourrait ne pas être un moyen de spécifier un en tant que "sélectionnées"
Vous devez vérifier les commandes intérieures dans la répétition de la liste. Puisque vous êtes en train de créer une table, vous pouvez être en mesure de vérifier l'index sélectionné de la table elle-même au lieu de vérifier l'index sélectionné de la répétition.
Sinon, itérer sur les contrôles et de trouver celui qui est sélectionné.
Par exemple, vous pouvez itérer sur chaque ligne et de regarder pour l'envoi de DDL, quelque chose comme ceci:
OriginalL'auteur TJB
Place d'un label dans votre Répéteur et le lier, puis dans votre SelectedIndexChanged de votre DropDownList vous pouvez obtenir la valeur de la manière suivante:
Ce qui concerne.
OriginalL'auteur Piyey