2011-12-29 160 views
0

我有我有單選按鈕以及複選框的asp.net網頁。 當單選按鈕狀態發生任何變化時,我需要更改複選框的文本。更改單選按鈕的狀態更改複選框的文本

請建議我如何能做到這一點...

我試着用單選按鈕的狀態的情況下,對我已設置檢查框的文本屬性更改事件&。 這個我已經在背景.cs文件 中完成,但沒有發生。

請建議。 謝謝

回答

1

您需要設置RadioButton的屬性AutoPostBack=true和處理程序CheckedChanged事件。

例子:

<asp:RadioButton 
       ID="RadioButton1" 
       runat="server" 
       AutoPostBack="True" 
       GroupName="Group1" 
       oncheckedchanged="RadioButton1_CheckedChanged" /> 
<asp:RadioButton 
       ID="RadioButton2" 
       runat="server" 
       AutoPostBack="True" 
       GroupName="Group1" 
       oncheckedchanged="RadioButton1_CheckedChanged" /> 
<asp:CheckBox ID="CheckBox1" runat="server" /> 

而後面的代碼:

protected void RadioButton1_CheckedChanged(object sender, EventArgs e) 
    { 
     CheckBox1.Text = RadioButton1.Checked ? "Checked" : "Not Checked"; 
    } 
+0

嘿AVD!很好的答案,但維傑希望改變複選框的文本而不是單選按鈕。 – Bastardo 2011-12-29 14:06:43

+0

@OkayGuy - 謝謝!我已經更新了它。 – adatapost 2011-12-29 14:10:00

+0

@Vijay - 編輯您的文章和相關代碼。 – adatapost 2011-12-30 06:56:10

0

從你提供我會建議使用Javascript做到這一點,因爲這將極大地改善了用戶體驗的信息。如果你能提供更多的細節,我可以給你更多的信息。

編輯按你的意見

的標記:

<asp:RadioButtonList ID="RadioButtonList1" runat="server"> 
    <asp:ListItem Value="RadioButton1">RadioButton1</asp:ListItem> 
    <asp:ListItem Value="RadioButton2">RadioButton2</asp:ListItem> 
</asp:RadioButtonList> 

<asp:CheckBox ID="Checkbox1" runat="server" Text="RadioButton1" /> 

的JavaScript:

$(function() { 
    $("#<%=RadioButtonList1.ClientID %> input:radio").change(function() { 
     $("#<%=Checkbox1.ClientID %>").next().text($("#<%=RadioButtonList1.ClientID %> input:radio:checked").val()); 
    }); 
}); 

RadioButtonList將生成HTML一個<Table>RadioButtonList1ID。 javascript選擇器從該表格中選擇所有單選按鈕。雖然這將滿足你的要求,但發送到服務器是另一回事。

+0

正如我所說,我有複選框說「Checkbox1」text =「Text1」。我也有Radiobutton說「Radio1」和「Radio2」。現在默認Radio1被選中。但是當我檢查Radio2時,Checkbox1的文本應該改爲「Text2」。這是我想要的,但老實說,我是新來的ASP.net以及JavaScript ...請幫助 – Vijay 2011-12-30 07:00:29

1

您可以將AutoPostBack屬性設置爲true。這會將JavaScript添加到客戶端,從而自動增加回發事件。

ASPX

<asp:RadioButton ID="RadioButton1" runat="server" AutoPostBack="True" 
     oncheckedchanged="RadioButton1_CheckedChanged" /> 
<asp:CheckBox ID="CheckBox1" runat="server" /> 

的.cs

protected void RadioButton1_CheckedChanged(object sender, EventArgs e) 
{ 
    CheckBox1.Text = "some text..."; 
} 
-1

我想通過使用jQuery實現該任務將通過防止回傳增加peformance。

<script> 
     $(function() { 
      $("input[name='<%=RadioButton1.ClientID %>']").change(function(){ 
      $("#<%= CheckBox1.ClientID%>").next("label:first").text("New Text"); 
      }); 
     }); 
    </script> 

假設的單選按鈕具有ID 「RadioButton1」,複選框作爲ID 「CheckBox1」。

+0

-1你在那裏的第一個選擇器將只抓取'RadioButton1.ClientID'類型的所有元素,所以如果ClientID是'測試',那麼它會抓住所有像''。第二個選擇器不會顯示單選按鈕的文本,因爲沒有單選按鈕的文本屬性。 – Craig 2011-12-29 15:27:03

+0

@Craig - 更新了我的答案。 – Bibhu 2011-12-29 15:38:10

+0

真的不想在這裏給你,但是...當你使用一個id選擇器時,你錯過了'#'符號,你有一個錯字。此外,因爲單選按鈕是一個集合,所以設置id屬性是不合適的...而是應該使用name屬性並將您的選擇器更改爲類似'input [name ='<%= RadioButton1.ClientID%>']' 。如果你使用'#'標誌向jQuery表明你想要一個帶有指定'id'的元素,它將只會返回0或1個項目。 – Craig 2011-12-29 15:47:46