2

私は基本的に、そのコントロールを使用せずに、RadioButtonList が行うことを実現したいと考えています (つまり、ラジオ ボタンを分離したままにします)。そこで、2 つの通常の RadioButton (リストではない) コントロールをページにドラッグしました。両方のラジオ ボタンが AutoPostback=true に設定されています。

次の 2 つのイベント ハンドラを使用してみました。

protected void radio1_CheckedChanged(object sender, EventArgs e)
{
    radio2.Checked = false;
}

protected void radio2_CheckedChanged(object sender, EventArgs e)
{
    radio1.Checked = false;
}

だから私が期待しているのは、radio1 がユーザーによってクリックされた場合、radio2 のチェックを外す必要があるということです。これは起こりません。エラーなどはありません。調べてみると、実際にラジオ ボタンの 1 つを選択すると、イベントが発生することがわかりました。そして、もう一方のラジオ ボタンの .Checked ステータスを false に変更します。ただし、ページ上では、両方のラジオ ボタンがチェックされたままになっています。(ポストバックの問題のようですが、そうではありません)。


RadioButtonList コントロールを使用できない理由は、ページに他のオプションがある場合、特定のラジオ ボタンの選択を無効にする必要があるためです。たとえば、ドロップダウン リストでアイテム A を選択すると、radio1 が無効になるため、選択することすらできませんが、アイテム B を再度選択すると、radio1 が再度有効になり、radio2 が無効になります。

4

2 に答える 2

4

これを実現するためにサーバー側のイベントは必要ありません。ラジオボタンのGroupName属性を使用し、すべてのラジオボタンを同じgroupNameの下に保持します。

<asp:RadioButton ID="RadioButton1"  GroupName = "a" runat="server" />
<asp:RadioButton ID="RadioButton2" GroupName = "a" runat="server" />
<asp:RadioButton ID="RadioButton3" GroupName = "a"  runat="server" />
于 2012-05-11T06:54:00.780 に答える
0

他のラジオボタンがチェックされているかどうかのチェックを追加するだけで機能します

 private void radioButton1_CheckedChanged(object sender, EventArgs e)
    {
        if (radioButton1.Checked)
        radioButton2.Checked = false;
    }

    private void radioButton2_CheckedChanged(object sender, EventArgs e)
    {
        if (radioButton2.Checked)
        radioButton1.Checked = false;
    }
于 2012-05-11T06:56:36.673 に答える