如何根据gridview中的某些条件检查复选框

时间:2014-09-22 10:38:24

标签: c# asp.net gridview checkbox

我有一个加载的DataGrid。在该DataGrid中,第一列是CheckBox,第二列是" Name"。我还保存了一个字段" Name"在数据库中。在这里,我想要检查CheckBox是否等于我存储在数据库中的数据。

我的问题在于,我只需要检查一个CheckBox。 例如:[如果我的预期结果是要检查的第1,第2和第3个CheckBox,但我只检查了第3个。 ]

我的示例代码是

 foreach (GridViewRow row in GrdProduct.Rows)
    {
        if (row.RowType == DataControlRowType.DataRow)
        {
            Label lblproduct = (Label)row.FindControl("lblProduct");
            CheckBox chkSelect = (CheckBox)row.FindControl("chkSelectAll");

            for (int rowIndex = 0; rowIndex < dt.Rows.Count; rowIndex++)
            {
                DataRow r = dt.Rows[rowIndex];

                if (Convert.ToString(r["productName"]) == lblproduct.Text)
                {
                    chkSelect.Checked = true;

                }
                else
                {
                    chkSelect.Checked = false;
                }
            }

        }

2 个答案:

答案 0 :(得分:0)

最后我得到了解决方案......只需删除其他部分

 else
            {
                chkSelect.Checked = false; }

--

谢谢大家...

答案 1 :(得分:0)

抱歉,我失明了。您正在遍历数据行,当然您很可能只有一个匹配。在所有其他情况下,它立即变得不受控制。使用以下内容:

     foreach (GridViewRow row in GrdProduct.Rows)
     {
        if (row.RowType == DataControlRowType.DataRow)
        {
            Label lblproduct = (Label)row.FindControl("lblProduct");
            CheckBox chkSelect = (CheckBox)row.FindControl("chkSelectAll");

            chkSelect.Checked = false;

            for (int rowIndex = 0; rowIndex < dt.Rows.Count || !chkSelect.Checked; rowIndex++)
            {
                DataRow r = dt.Rows[rowIndex];

                if (Convert.ToString(r["productName"]) == lblproduct.Text)
                {
                    chkSelect.Checked = true;

                }
            }

        }

Als在比较字符串时我建议http://msdn.microsoft.com/en-us/library/system.string.equals(v=vs.110).aspx

如果你想对网格中的数据和控件做什么,我还建议进行额外的验证。