2011-11-25 48 views
2

這是我沒有與ASP對象得到的東西。我在更新面板中有一個按鈕。在同一頁面上,我有一個複選框,一個單選按鈕和一個文本框(在更新面板之外)。當我點擊我的按鈕時,我可以訪問所有這三個對象。該文本框能夠保留他的文本值。但收音機/複選框總是返回錯誤,當我檢查檢查狀態。在回發時保持無線電/複選框值?

當然,我的表單比我剛剛說的要複雜。它涉及Javascript和用戶控件。我設法使用Request.Form來獲取我的複選框/收音機的值,但是我不覺得這個解決方案已經夠用了。

有人可以幫我找到爲什麼無線電/檢查不會返回真正的檢查狀態?先謝謝你!

編輯: 我試圖在一個簡單的aspx頁面下面,它似乎工作:

<asp:CheckBox runat="server" ID="checkbox" /> 

    <asp:RadioButton runat="server" ID="radio1" GroupName="radio" CssClass="testRadio" /> 
    <asp:RadioButton runat="server" ID="radio2" GroupName="radio" CssClass="testRadio" /> 

    <asp:TextBox runat="server" ID="text" /> 


    <asp:ScriptManager runat="server"> 
    </asp:ScriptManager> 

    <asp:UpdatePanel runat="server"> 
     <ContentTemplate> 
      <asp:Button runat="server" ID="test_but" OnClick="test_click" /> 

     </ContentTemplate> 
    </asp:UpdatePanel> 

,然後我可以訪問所有屬性爲test_click()。所以我的真實形式中有一些東西會打破所有其他的東西。我試圖在我的測試頁面中添加一個小小的JavaScript,它似乎也起作用。

+0

是否啓用了自動回上的複選框/單選按鈕?如果不是回發可能只發送文本框的值,並在複選框和單選按鈕上的自動回覆,它將不得不保持這樣的值 – jclozano

回答

2

這些控件的已知問題。使用SaveViewState和LoadViewState方法來存儲和檢索這些值。

http://www.4guysfromrolla.com/articles/110205-1.aspx

protected override void LoadViewState(object savedState) 
{ 
    base.LoadViewState(savedState); 

    if (ViewState["Checked"] != null) 
     checked = (bool)ViewState["Checked"]; 
} 

protected override object SaveViewState() 
{ 
    ViewState["Checked"] = checked; 

    return base.SaveViewState(); 
} 
+0

你確定嗎?這將是一個真正的大問題沒有? – NLemay

+0

更新回答 - 試試看。永遠不能理解爲什麼這不是更好的文檔... – IrishChieftain

+0

嘗試沒有UpdatePanel? – IrishChieftain