Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通过GridView中的复选框循环检查复选框是否';检查过了吗_C#_Asp.net_Gridview_Checkbox_Foreach - Fatal编程技术网

C# 通过GridView中的复选框循环检查复选框是否';检查过了吗

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)

我有一个gridview,在gridview的一列中,我有两个带有不同ID的复选框 因此,我在单击按钮(更新按钮)以循环行并检查是否选中了该特定行的复选框后,执行foreach循环,然后我希望在单击按钮后一起更新所有行

我在Page_Load()中填充gridview,foreach循环根据行数选择正确的循环数,但在检查复选框是否选中时,它不会进入If语句

这是我的密码:

    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");