2012-08-28 2 views
0

Ma page aspx contient une liste de produits avec des zones de texte générées dynamiquement et un bouton de commande avec chaque produit.Comment obtenir la valeur du contrôle web de zone de texte créé dynamiquement dans asp.net

Les zones de texte et les boutons sont générés lors de l'exécution avec des identifiants comme txt110234, txt110235 ... etc. pour les zones de texte et btn110234, btn110235 ... etc. pour les boutons.

Chaque fois que l'utilisateur doit entrer une quantité dans la zone de texte et appuyer sur le bouton de commande associé à un produit pour passer une commande.

Tout fonctionne bien, mais maintenant je veux le faire en utilisant ajax, donc j'ai besoin pour obtenir la valeur saisie par l'utilisateur dans le texte box.I voulez faire quelque chose comme this-

var quan = document.getElementById('<%= txt' + id + '.ClientID%>').value; 

Mais son me donnant l'erreur suivante. ?

Compiler Error Message: CS1012: Too many characters in character literal Source Error:

Comment puis-je obtenir la valeur de Toute suggestion textbox sera apprécié ..

+0

Ce ** posté le code ** est JavaScript et c'est pourquoi (C#) il se plaint. Vous devez utiliser FindControl (id) pour obtenir la référence du contrôle. – adatapost

+0

Vous avez probablement votre javascript dans un littéral. Vous pouvez directement le placer sur la page. – nunespascal

+0

mais je veux le faire en utilisant javascript.est-ce pas possible? – user1482852

Répondre

2

L'erreur que vous avez eu est que vous ne pouvez pas impliquer javascript dans le bloc "<% = ..%>". Cela ne semble pas non plus possible car l'expression "<% = ..%>" est évaluée dans le serveur avant le rendu de la page, mais votre "id" est une variable côté client.

Vous pouvez définir le script côté serveur comme ça:

code côté client:

function foo(ctlID) 
{ 
    var quan = document.getElementById(ctlID).value; 
} 

code côté serveur:

TextBox txt = new TextBox(); 
txt.ID = "SomeID"; 
Form.Controls.Add(txt); 
Button btn = new Button(); 
btn.ID = "someID"; 
btn.OnClientClick = "foo('" + txt.ClientID + "')"; 
+0

Merci .. C'est vraiment une belle solution .. mais je veux l'id de client de boîte de texte alors qu'il retournera l'ID de client de bouton – user1482852

+0

Je l'ai changé à l'identifiant de boîte de texte –

+0

oui, son me donnant l'id..but quand m using dans le code javascript, son me donner null ... – user1482852

0

Suggestion: Une façon de le faire est d'utiliser le sélecteur jQuery css. Vous pouvez assigner un cssclass particulier à toute votre zone de texte d'entrée et les récupérer tous via le sélecteur jQuery.

Par exemple, sur la génération de zones de texte dynamique, vous pouvez les assigner CssClass = "productQuantity"

, puis plus tard, utilisez le sélecteur jQuery quelque chose comme $ ('productQuantity')

Personnellement, je préfère cette approche Si je voudrais traverser à plusieurs éléments. Cela m'évite de traiter des IDs, etc.

Questions connexes