C# 通过GridView中的复选框循环检查复选框是否';检查过了吗
我有一个gridview,在gridview的一列中,我有两个带有不同ID的复选框 因此,我在单击按钮(更新按钮)以循环行并检查是否选中了该特定行的复选框后,执行foreach循环,然后我希望在单击按钮后一起更新所有行 我在Page_Load()中填充gridview,foreach循环根据行数选择正确的循环数,但在检查复选框是否选中时,它不会进入If语句 这是我的密码:C# 通过GridView中的复选框循环检查复选框是否';检查过了吗,c#,asp.net,gridview,checkbox,foreach,C#,Asp.net,Gridview,Checkbox,Foreach,我有一个gridview,在gridview的一列中,我有两个带有不同ID的复选框 因此,我在单击按钮(更新按钮)以循环行并检查是否选中了该特定行的复选框后,执行foreach循环,然后我希望在单击按钮后一起更新所有行 我在Page_Load()中填充gridview,foreach循环根据行数选择正确的循环数,但在检查复选框是否选中时,它不会进入If语句 这是我的密码: protected void btnUpdate_Click(object sender, EventArgs e)
protected void btnUpdate_Click(object sender, EventArgs e)
{
int count = 0;
foreach (GridViewRow row in GridView1.Rows)
{
count++;
if (((CheckBox)row.FindControl("showBbtn")).Checked & ((CheckBox)row.FindControl("showCbtn")).Checked) // if 2 buttons are checked show error popout
{
Response.Write(@"<script language='javascript'>alert('You can only select Yes or No')</script>");
}
else
{
if (((CheckBox)row.FindControl("showCbtn")).Checked) // Won't enter
{
//Do something here.
}
if (((CheckBox)row.FindControl("showBbtn")).Checked) // Won't enter
{
// Do something here.
}
}
}
Response.Write(count);
}
我的aspx:
<asp:TemplateField HeaderText="Display">
<ItemTemplate>
<asp:CheckBox ID="showCbtn" runat="server" Text = "Yes" />
<br />
<asp:CheckBox ID="showBbtn" runat="server" Text = "No" />
</ItemTemplate>
</asp:TemplateField>
您的If状况有问题。您给出了错误的符号(&S),它应该是两个(&S)。替换
if (((CheckBox)row.FindControl("showBbtn")).Checked & ((CheckBox)row.FindControl("showCbtn")).Checked)
与
并在iPostBack中添加BindQuestion()。这可能会对您有所帮助
foreach (GridViewRow gr in grdCreateDues.Rows)
{
CheckBox chkC = gr.FindControl("showCbtn") as CheckBox;
CheckBox chkB = gr.FindControl("showBbtn") as CheckBox;
GridViewRow Row = ((GridViewRow)chk.Parent.Parent);
if (chkC.Checked)
{
// update tblGridtable set xzy = @xyz
}
else if (chk.B.Checked)
{
// update tblGridtable set abc = @abc
}
}
尝试使用以下方法:-
CheckBox chbx = GridView1.HeaderRow.FindControl("CheckBox1") as CheckBox;
if (chbx != null && chbx.Checked)
{
Condition
}
这种方法也在起作用
var checkBox = (CheckBox)item.FindControl("ckbActive");
我认为你应该只使用一个复选框。如果选中,则更新行,否则不。我使用了2个复选框,因为我想让他们选择是或否,然后我会将是或否更新到该特定记录的数据库中,现在的问题是,它不会输入If语句,我想更新整个GridView如果您希望最终用户显示Yes(是)和No(否)选项,并且用户应该能够选择其中任何一个选项,那么您可以使用单选按钮。问题是,它每次只更新一行,而不是在单击update(更新)按钮后更新每一行。如果选中任何复选框,基于选中的值,您需要更新整个GridView记录吗?我已经尝试过了,它不会影响结果,仍然是一样的,如果我将BindQuestion()放在ispostback中,foreach循环将只运行一次,因为回发,它不会进入else{}中的2 if循环如果我把它放在ispostback之外如果我把它放在ispostback里面,它将进入if循环,但只运行一次,这意味着我一次只能更新一行,而不是在单击update按钮时更新每一行hi@Raghubar我想他的问题的解决方案是使用XML,我们可以在一个实例中发送所有更新的值。您怎么说?是的,如果使用XML,则所有更新都需要连接数据库一次。@user2601570您想做什么?您的实际问题是什么?避免只使用代码回答。考虑为解决方案提供更详细的解释。
CheckBox chbx = GridView1.HeaderRow.FindControl("CheckBox1") as CheckBox;
if (chbx != null && chbx.Checked)
{
Condition
}
var checkBox = (CheckBox)item.FindControl("ckbActive");