Je cherche des informations sur la façon de mettre en œuvre un conteneur de nommage personnalisé pour les éléments dans un GridView. Mon problème est que j'ai un GridView avec une cellule pour chaque jour de la semaine, et chaque cellule contiendra le même ou des contrôles similaires. Pour les contrôles qui sont identiques, il serait bien de les nommer tous comme "lblPersonName". Toutefois, si vous faites cela, vous ne pouvez pas utiliser FindControl(), car il se plaindra qu'il existe des contrôles avec des ID en double dans la ligne. La racine du problème est que le conteneur de nommage pour les contrôles dans un GridView n'est pas la cellule de la table (DataControlFieldCell ou autre), mais c'est le GridViewRow.Conteneur de nommage personnalisé pour ASP.NET GridView?
Je ne sais pas s'il existe un moyen de le faire, mais ce serait bien de pouvoir échanger le conteneur de dénomination par défaut afin que la cellule devienne le conteneur de nommage, et je pourrais juste avoir les mêmes noms de contrôle.
Accordé, le ASPX pour cela commence à avoir un peu grand - je commence à voudrais avoir commencé le projet hors dans ASP.NET MVC ....
Dans tous les cas, je suis ouvert à d'autres alternatives en ce qui concerne la façon d'implémenter un GridView avec des contrôles comme celui-ci. À ce stade, il peut être plus simple d'utiliser simplement une vieille table et d'ajouter dynamiquement les contrôles ...
Pour clarification: - Chaque colonne est définie avec un ItemTemplate, et les contrôles résident dans ItemTemplate. - La seule façon de le faire fonctionner maintenant est d'avoir "lblPersonNameOne", "lblPersonNameTwo", etc.
Chaque colonne est un champ de modèle et les contrôles sont déclarés dans le modèle. Donc, par exemple, j'ai deux colonnes, ColOne et ColTwo, et chacune d'elles a un contrôle nommé "lblPersonName" dans la définition de modèle. Si vous appelez FindControl() dans cette situation, vous obtenez une exception. Vous devez donc nommer les libellés "lblPersonNameOne" et "lblPersonNameTwo". Ce qui peut être beaucoup si vous avez beaucoup de contrôles. –
Je pense que "trop de contrôles" est votre problème racine. Mais la solution la plus simple consiste simplement à donner à chaque contrôle un identifiant unique. Créer un conteneur de nommage personnalisé est, IMO, beaucoup trop de frais généraux. –