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

How to get value of dynamically created textbox web control in asp.net

本文关键字:文本 web 控件 创建 动态 asp net 获取      更新时间:2023-09-26

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

文本框和按钮是在运行时生成的,文本框的id为txt110234、txt110235…等等,按钮的id为btn10234、btn10235……等等。

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

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

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

但它给了我以下错误。

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

如何获取文本框的值?任何建议都将不胜感激。。

您得到的错误是因为您不能将javascript包含在"<%=..%>"块中。此外,这看起来是不可能的,因为"<%=..%>"表达式是在呈现页面之前在服务器中求值的,但您的"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 + "')";

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

例如,在动态生成文本框时,可以将它们分配给CssClass=".productQuantity"

然后稍后使用jQuery选择器,类似于$('.productQuantity')

如果我想遍历多个元素,我个人更喜欢这种方法。这使我不用处理Id等。