2008-12-19 11 views
0

Tous,Gridview HTML ID de ligne créé de façon incorrecte

Quand mon gridview se lie à son point d'émission (défini par programmation) et génère le HTML, la ligne ID de sortent dans le code HTML comme le même pour chaque ligne ... à savoir ils ne sont pas uniques. Je pense ceci:

<select name="ctl00$ContentHolder$list$ctl03$EquipmentTypeList" id="ctl00_ContentHolder_list_ctl03_EquipmentTypeList" style="width:160px;"> 

-à-dire l'ID contient le ctl03 pour identifier une rangée ... mais ... quand j'utilise un contrôle utilisateur à la place d'une liste déroulante standard que je reçois ceci:

<select name="ctl00$ContentHolder$flbShipFrom$ddlAvailableOptions" onchange="StoreSelection('ctl00_ContentHolder_flbShipFrom_ddlAvailableOptions'); setTimeout('__doPostBack(\'ctl00$ContentHolder$flbShipFrom$ddlAvailableOptions\',\'\')', 0)" id="ctl00_ContentHolder_flbShipFrom_ddlAvailableOptions" style="width:283px;" /> 

Par exemple, l'ID ne contient pas de numéro de ligne unique. Cela se produit également avec des contrôles .NET standard, il int même ligne:

Chaque fois que je tente d'accéder aux données par ID j'obtenir les informations erronées et, il semble aussi que viewstate pour le gridview est pas régénérés correctement comme les boîtes de texte etc. perdent des valeurs sur une page resoumise.

totalement coincé ... toutes les suggestions, veuillez

+0

Si vous avez publié votre code, cela pourrait aider à résoudre le problème. – Phaedrus

Répondre

1

Assurez-vous que vous utilisez pour générer les lignes implémente INamingContainer.

En ce qui concerne les problèmes de ViewState, cela peut être un symptôme ou la façon dont vous générez les lignes. Publiez votre code côté serveur si le nom du conteneur n'aide pas.

Également, essayez d'éviter d'utiliser l'ID côté client directement? Dans la plupart des cas, vous pouvez utiliser FindControl (côté serveur) ou passer le résultat de ClientID à votre Javascript (côté client) si vous avez vraiment besoin d'un contrôle exact. En règle générale, il vaut mieux ne pas référencer les ID HTML directement, notamment en raison du problème de dénomination imbriqué que vous avez déjà trouvé.

Questions connexes