我有一个gridview模板字段,其中有3个单选按钮。一旦被检查,其他2被禁用。现在的问题是,如果选中了一个单选按钮,并且下次必须禁用单选按钮时单击一个按钮,并且必须为该特定行启用另一个单选按钮。你能帮忙吗?
foreach (GridViewRow gr in all_day_non_prod_GridView.Rows)
{
check1 = ((RadioButton)gr.FindControl("first")).Checked;
check2 = ((RadioButton)gr.FindControl("reminder")).Checked;
check3 = ((RadioButton)gr.FindControl("completed")).Checked;
if (check1)
{
reminder = "First";
n = 1;
break;
}
else if (check2)
{
reminder = "Second";
n = 2;
break;
}
else
{
reminder = "Completed";
n = 3;
break;
}
}
答案 0 :(得分:0)
所以我认为您需要在复选框中使用CheckedChanged事件。这就是我在我的一个应用程序中使用我的方法。
protected void cbFirstCheckBox_CheckedChanged(object sender, EventArgs e)
{
//this helps you find the row and control in the gridview
GridViewRow gvr = (GridViewRow)(sender as Control).Parent.Parent;
CheckBox firstCheckBox = ((CheckBox)gvr.FindControl("cbSecondCheckBox"));
CheckBox secondCheckBox = ((CheckBox)gvr.FindControl("cbSecondCheckBox"));
//I believe you said you want to disable one then enable the 2nd one.
firstCheckBox.Enabled = false;
secondCheckBox.Enabled = true;
}
然后在你的HTML中你要放这个。
<asp:CheckBox ID="cbFirstCheckBox" runat="server" OnCheckedChanged="cbRemoveActive_CheckedChanged" AutoPostBack="true" Enabled="false"/>
现在,单击第一个复选框后,将启用第二个复选框,并禁用第一个复选框。您将AutoPostBack设置为true,以便页面刷新。我相信这就是你想要的。您也可以使用此技术执行其他复选框。我希望这有帮助。
编辑:我刚刚看到您使用了单选按钮。你应该仍然可以用CheckBox代替RadioButton来做同样的事情。我没有测试过上述内容,但我认为它会引导您朝着正确的方向前进。另一个编辑:你可能真的能够保持你拥有的foreach循环。这也应该有效。
protected void rbFirstButton_CheckedChanged(object sender, EventArgs e)
{
foreach (GridViewRow gr in all_day_non_prod_GridView.Rows)
{
RadioButton rbFirstButton = ((RadioButton)gv.FindControl("rbFirstButton"));
RadioButton rbSecondButton = ((RadioButton)gv.FindControl("rbSecondButton"));
rbFirstButton.Enabled = false;
rbSecondButton.Enabled = true;
}
}
上次修改:您无法使用foreach,它将启用所有复选框,而不仅仅是您想要的行..下面的代码就是我测试过的并且有效。
protected void rbOne_CheckedChanged(object sender, EventArgs e)
{
GridViewRow gvr = (GridViewRow)(sender as Control).Parent.Parent;
RadioButton rbOne = ((RadioButton)gvr.FindControl("rbOne"));
RadioButton rbTwo = ((RadioButton)gvr.FindControl("rbTwo"));
RadioButton rbThree = ((RadioButton)gvr.FindControl("rbThree"));
rbOne.Enabled = false;
rbTwo.Enabled = true;
rbThree.Enabled = true;
}
我相信这就是你要找的东西。我希望这有帮助。