2012-05-18 76 views
0

我的站點具有語言更改控制,所以當單擊一種語言時,我將重新加載相同的頁面但使用不同的語言文本,並且如果用戶已經在表單中填寫了字段,我必須重新加載數據。c#ASP.NET Datalist和HTML單選按鈕

我已經成功地重新加載數據到複選框,文本框,但不與無線電鈕

請看看我的代碼

我有一個DataList和內部的單選按鈕。

<asp:DataList runat="server" ID="dlRole"> 
       <ItemTemplate> 
        <input type="radio" id="rblRole" name="rblRole" value='<%# Eval("RoleCode") %>' />      
        <asp:Label ID="lbRole" runat="server" Text='<%# Eval("Description")%>'></asp:Label> 
       </ItemTemplate> 
      </asp:DataList> 

我加載數據列表,單選按鈕

dlRole.DataSource = ... 
dlRole.DataBind(); 

我的單選按鈕的值保存到用戶會話對象

user.Role = Request["rblRole"]; 

但是當我重新加載所保存的對象爲無線按鈕,它無法找到單選按鈕對象控件....單選按鈕始終爲NULL。而且我不知道爲什麼

 foreach (DataListItem item in dlRole.Items) 
     { 
      HtmlInputRadioButton radio = (item.FindControl("rblRole") as HtmlInputRadioButton);     
      if (radio != null) <--- always nulll 
      { 
       if (radio.Value == user.Role.ToString()) 
       { 
        radio.Checked = true; 
       } 
       else 
        radio.Checked = false; 
      } 
     } 

請讓我知道如何解決 謝謝

回答

0

你需要在你的單選按鈕添加

runat="server" 

否則將無法從訪問守則背後。

+0

我曾嘗試過,如果我添加runat = server,按鈕不分組,用戶可以一次選擇多個....任何想法如何解決這個問題? – Ben

+0

歡迎來到ASP.NET;)這是一箇舊bug(請參閱http://support.microsoft.com/kb/316495) - 如果您執行一些搜索,您會發現一些解決方法 - 主要是重寫名字與一點JavaScript –