如何使单选按钮在列表视图中工作

How to make RadioButtons work in a Listview

我想让 RadioButtons 在 ListView 中工作。我在 ListView 中添加了一个 RadioButton 控件,并用一个 LinkBut​​ton 控件将其包装起来。我使用 LinkBut​​ton 是为了使用 ListView 的 ItemCommand 属性 从代码 Behind 更改 RadioButton 的状态。

<td>
        <asp:LinkButton ID="LinkButton6" runat="server" CommandName="Driver">
             <asp:RadioButton ID="SelectedDriver" runat="server" AutoPostBack="true" OnCheckedChanged="SelectedDriver_CheckedChanged" />
        </asp:LinkButton></td>

为了能够使所有 radioButton 互斥,我将 ListView 中的所有 radioButton 重置为 false 然后我将调用事件的 RadioButton 设置为 true 这是隐藏代码中的方法:

 protected void Drivers_ItemCommand(object sender, ListViewCommandEventArgs e)
        {
            if (e.CommandName.ToString() == "Driver")
            {
                foreach (ListViewItem listItem in this.Drivers.Items)
                {
                    (listItem.FindControl("SelectedDriver") as RadioButton).Checked = false;
                }
                (e.Item.FindControl("SelectedDriver") as RadioButton).Checked = true;
            }
        }

然而它并没有像我想要的那样工作。当我单击单选按钮时,它们会不断被选中 none,其中的 none 会被重置。为了让它工作,我必须在 radioButton 控件旁边添加一些文本,我必须单击不在 RadioButton 上的文本才能工作。如您所见,文本部分非常烦人。 任何人都可以帮助我知道我可以做些什么来让它按预期工作吗?或者有谁知道可行的解决方案。

谢谢

为了让 RadioButtons 按预期工作,我设置了 AutoPostBack = "true" 属性 OnCheckedChanged = "SelectedDriver_CheckedChanged"

我从后面的代码中执行了以下操作,一切正常

 protected void SelectedDriver_CheckedChanged(object sender, EventArgs e)
        {
            RadioButton selectedButton = new RadioButton();
            selectedButton = (RadioButton)sender;
            foreach (ListViewItem listItem in this.Drivers.Items)
            {
                (listItem.FindControl("SelectedDriver") as RadioButton).Checked = false;
            }
            selectedButton.Checked = true;
        }