如何在asp.net中获取动态创建的文本框Web控件的价值

时间:2012-08-28 07:06:26

标签: c# javascript asp.net dynamic dynamic-web-controls

我的aspx页面包含产品列表以及动态生成的文本框和每个产品的一个订单按钮。

文本框和按钮在运行时生成,其中包含txt110234,txt110235 ......等文本框和btn110234,btn110235 ...等等按钮。

每次用户必须在文本框中输入数量并按下与任何产品相关的订单按钮才能下订单。

每件事情都很好但现在我想用ajax做,所以我需要在文本框中输入用户输入的值。我想做这样的事情 -

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

但是它给了我以下错误。

  

编译器错误消息:CS1012:字符文字中的字符过多源错误:

我如何获得文本框的价值?任何建议都将受到赞赏..

2 个答案:

答案 0 :(得分:2)

你得到的错误是因为你不能在“&lt;%= ..%&gt;”中包含javascript块。此外,由于“&lt;%= ..%&gt;”,这看起来不太可能表达式在呈现页面之前在服务器中计算,但您的“id”是客户端变量。

您可以在服务器端设置脚本:

客户端代码:

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

服务器端代码:

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

答案 1 :(得分:0)

建议: 一种方法是使用jQuery css选择器。您可以将特定的cssclass分配给所有输入文本框,并通过jQuery选择器检索所有这些文本类。

例如,在动态生成文本框时,可以为它们分配CssClass =“。productQuantity”

然后使用jQuery选择器,如$('。productQuantity')

我个人更喜欢这种方法如果我想遍历多个元素。这使我免于处理ID等。