2014-03-28 92 views
0

我试图让我动态生成的页面加载和使用jquery克隆这些文本框的值....如何从动态生成的文本框中获取值?

每个文本框都有一个唯一的ID在一行的文本框例如矩阵的形式有ID textbox11,textbox12,textbox13,textbox14等 为连续两个textbox21,textbox22,textbox23 ........

有没有什么办法让这些值..

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

public partial class product_entry : System.Web.UI.Page 
{ 
    int count; 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     int i, j; 
     for (i = 0; i < 1; i++) 
     { 
      TableRow tr = new TableRow(); 
      tr.Attributes.Add("class", "tabrow"); 

      for (j = 0; j <= 8; j++) 
      { 
       TableCell tc = new TableCell(); 

       if (j == 0) 
       { 
        tc.Controls.Add(new LiteralControl("<Button class=remove type=button>-</button>")); 
       } 
       if (j == 1) 
       { 
        tc.Attributes.Add("class", "sno"); 
       } 
       if (j == 2 || j == 3 || j == 4 || j == 5 || j == 6 || j == 7 || j == 8) 
       { 
        TextBox tb = new TextBox(); 
        tb.Style["width"] = "98%"; 
        tc.Controls.Add(tb); 
       } 
       tr.Controls.Add(tc); 
      } 
      Table1.Controls.Add(tr); 
     } 
    } 

    protected void Button1_Click(object sender, EventArgs e) 
    { 
     Label2.Text = TextBox1.Text; 
    for (int i = 1; i <= count; i++) 
    { 
     for (int j = 1; j <= 7; j++) 
     { 
      TextBox aa = (TextBox)Pnl.FindControl("textbox" + i + j); 
      Response.Write(aa.Text); 
     } 
    } 
    } 
} 

我想通过使用上面设计的循环来获取使用jquery geerated的数百个文本框的值是否存在办法做到这一点

+0

为每个“文本框”指定一个唯一的“ID”,然后在C#代码中使用'((TextBox)this.FindControl(someIDToLookFor)后面去获得它的价值。 –

+0

我不想获得iin jquery的价值我希望它在c#或代码后面,以便我可以将它们发送到数据库 – aks007

+0

如果不明确,我提供的代码是C#,而不是JavaScript。 –

回答

1

你可以使用jQuery在页面加载和类选择一个特定的CSS类添加到所有动态生成的文本框,您可以访问所有的人:

使用每个:i是在阵列中的位置,objDOM您正在迭代的对象(可以使用jQuery包装$(this)进行访问)。

$('input.SomeClass').each(function(i,obj){ 

var textboxid = $(this).id; 
var textboxValue = $(this).val(); // get text inside text box 

}); 
+0

但如何获得这些值在C#,以便它们可以进入进入数据库 – aks007

+0

简化你在c#中的工作方式 –

+0

你能解释一下 – aks007

0

如果一个元素都有一个唯一的ID,你可以使用选择格式

$('#theExactId').val() 

在HTML 4.01查询该元素,ID不能以数字开头。如果你的ID真的是11,12等,你可能需要/至少需要一个字母字符。

如果您试图在服务器端获取数据,则这些变量将成为HTTP POST的一部分。

+0

好吧,我做了它textbox11,textbox12 ....现在下一个 – aks007

0

要实际获得的价值您使用

$('#theExactId').val() 
+0

我不想获得价值iin jquery我希望它在c#或代码后面,以便我可以将它们发送到数据库 – aks007

0

的ASP.NET文字没有任何标记添加到页面。因此,您必须将您的内容包装在某个容器中,以便您可以通过JavaScript对其进行编辑:

您还应该考虑在JavaScript代码中重构所有控制ID的“硬”引用。在ASP.NET中,命名容器的概念将确保整个页面中的唯一ID。所以,如果你有一个控件调用

txtName 
,在内容部分

,客户端(如JavaScript中看到的)的真正名称将是如

ct00_txtName 

如果使用主页面。前缀是由命名容器自动添加的,以使id唯一。

幸运的是,每个控件都有一个名为ClientID的属性(服务器端),它将显示客户端上可用的实际ID。因此,如果您需要从客户端访问控件,请确保始终使用ClientID属性来获取名称。 像这样:

var name = document.getElementById('<% =txtName.ClientID %>'); 
+0

我不想在jQuery或JavaScript中获得价值,我希望它在c#或代码后面,以便我可以将它们发送到database.is有任何方式来做到这一点 – aks007

0

确保您最初创建文本框的C#代码和重复标记的jQuery为每个标记分配一个唯一的名称。所以,你必须标记是这样的:

<input name="textbox1" ... /> 
<input name="textbox2" ... /> 
<input name="textbox99" ... /> 

您通过回传或阿贾克斯提交表单后,您可以使用Request.Form集合访问的文本框中的值,像这样:

foreach (string key in Request.Form.Keys) 
{ 
    if(key.StartsWith("textbox")) 
    { 
     string currentValue = Request.Form[key]; 
    } 
} 

如果使用GET提交表单,则需要访问Request.QueryString

+0

是的,你说的第一件事情已经实现了(所有的标签都有唯一的id)。但是我可以设置request.form [key]是lbel – aks007

+0

的文本您解释的方法不起作用 – aks007

+0

输入标签需要一个唯一的名称,而不是唯一的标识符才能工作。提交html表单时,输入标记的名称将用作Request.Form集合的关键字。 –

相关问题