2014-03-28 167 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集合的關鍵字。 –

相關問題