2011-09-21 70 views
0

我有一個動態創建的物料清單,每個行項都是一個動態的user_control。 user_control具有用於數量輸入的文本框。當我點擊提交按鈕時,我想從每個文本框中獲取所有數量,但控件在頁面加載時全部消失,頁面顯示爲零控件。從頁面中的動態控制中獲取值Asp.Net

我知道你可以打開文本框的autopostback,然後捕獲每個單獨的text_changed_event,但看起來效率不高。當用戶點擊提交按鈕時,我想循環瀏覽所有這些按鈕,然後將它們帶回到相同的物料清單頁面。

回答

0

首先,控件在回發中消失的原因是它們被動態地添加到頁面中,並且當發生回發時,關於動態控件的信息丟失,頁面沒有關於這些動態控件的信息。

現在關於從動態用戶控件中的控件獲取值,您可以使用FindControl方法,或者必須遍歷Controls集合的用戶控件以獲取對TextBoxes的引用。

有關如何做到這一點的想法:

//1. Using ID of user control 
//inside button_click method 
protected void btnSubmit_Click(...) 
{ 
    TextBox txt1 = idOfUserControl.FindControl(textBoxId); 
} 

//2. Using type of user control 
//inside button_click method 
protected void btnSubmit_Click(...) 
{ 
    foreach(Control c in Page.Controls) 
     if(c is YourUserControlClass) 
     { 
      YourUserControlClass control = (YourUserControlClass)c; 
      TextBox txt1 = c.FindControl(textBoxId); 
     } 
}