2013-03-27 79 views
1

我在後臺代碼動態RadiobuttonLists的一部分(這樣一個文本框坐在旁邊的每個單選按鈕的)創建了幾個輸入控件(文本):如何添加<%= %>標記的代碼隱藏

RadioButtonList radioOption = new RadioButtonList(); 

radiobuttonlist.Items.Add(new ListItem(dt.Rows[i][9].ToString() + " <input id=\"" + name + "\" runat=\"server\" type=\"text\" value=\"Enter text\" />") 

所有的控件都在UpdatePanel中。

如何在我的代碼更新輸入標籤後面,所以我可以得到價值是這樣的:

value="<%= this.InputValue %>" /> 

的原因是,這樣我可以在Page_Load訪問/設置的值(如在回發上,輸入文字消失):

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack) 
    { 
     this.InputValue = "something"; 
    } 
} 

任何想法?

謝謝!

+2

您可以直接在您的代碼後面訪問該值。無需使用<%= %> – amesh 2013-03-27 07:35:46

+0

我應該更新我的問題 - 我這樣做的原因是因爲每次回發時,輸入文本消失。我正在嘗試將用戶輸入文本綁定到輸入控件。 – 2013-03-27 07:37:26

回答

1

該值總是消失,因爲您沒有在後期保留數據。我甚至不這樣

「<%= this.InputValue%>」

會使你認爲它會的方式。 <%>標籤由服務器呈現,而不是瀏覽器呈現。相反,使用視圖狀態或會話來持續發佈帖子後的值。如果您需要幫助,請發佈更多控制代碼以及您卡住的位置

+0

謝謝傑森。非常感激。 – 2013-03-28 00:43:41

1

我認爲您遇到ASP.NET Page Life Cycle問題。

當您將控件動態添加到頁面的控件集合中時,您需要在正確的時間設置它們。從上面的鏈接文檔:

起步階段後引發完成和初始化 階段開始之前。

使用此事件的以下內容:
...

  • 創建或重新創建動態控件。

...

這種方式,您可以只使用普通的ASP.NET視圖狀態在回發信息仍然存在。

如果您在Page_PreInit事件期間創建動態RadioButtonLists,我想大多數問題都會得到解決。

protected void Page_PreInit(Object sender, EventArgs e) 
{ 
    RadioButtonList radioOption = new RadioButtonList(); 
    radiobuttonlist.Items.Add(new ListItem(dt.Rows[i][9].ToString() + " <input id=\"" + name + "\" runat=\"server\" type=\"text\" value=\"Enter text\" />") 
} 
+0

嗨jadarnel - 所有的動態控件都是在OnInit函數中創建的,而不是Page_Load。我的所有用戶控件例如。表,radiobuttonlist,複選框的值保留,因爲這一點,除了輸入控件(這是radiobuttonlist的一部分)...因此我的問題...任何想法? – 2013-03-28 00:40:41

1

我建議你在你的代碼中使用UpdatePanel.Update method後面,以更新與新價值的內容

注意:你的領域inputValue將每畝在部分的UpdatePanel,以刷新

鏈接:http://msdn.microsoft.com/fr-fr/library/system.web.ui.updatepanel.update.aspx

+0

嗨Frederique,我已經使用UpdatePanel來包含我所有的動態控件。我所有的用戶控件,例如表格,複選框,單選按鈕列表,文本框的價值因此保留下來。但是,我的輸入控件(它是radiobuttonlist的一部分)是唯一沒有保留值的控件。因此我的問題。有任何想法嗎? – 2013-03-28 00:43:12