C# 如何根据gridview中的某些条件使复选框处于选中状态
我有一个加载的数据网格。在该数据网格中,第一列是复选框,第二列是名称。我还在数据库中保存了一个字段名。在这里,如果名称等于我存储在数据库中的数据,我想选中复选框 这里我的问题是,我只有一个复选框要检查。 ex:[如果我的预期结果是要选中的第1、第2和3dr复选框,但我只得到选中的第3个复选框。] 我的示例代码是C# 如何根据gridview中的某些条件使复选框处于选中状态,c#,asp.net,gridview,checkbox,C#,Asp.net,Gridview,Checkbox,我有一个加载的数据网格。在该数据网格中,第一列是复选框,第二列是名称。我还在数据库中保存了一个字段名。在这里,如果名称等于我存储在数据库中的数据,我想选中复选框 这里我的问题是,我只有一个复选框要检查。 ex:[如果我的预期结果是要选中的第1、第2和3dr复选框,但我只得到选中的第3个复选框。] 我的示例代码是 foreach (GridViewRow row in GrdProduct.Rows) { if (row.RowType == DataControlRow
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;
}
}
}
最后我得到了答案。。。简单地删除了其他部分
else
{
chkSelect.Checked = false; }
--
谢谢大家…对不起,我是盲人。您正在数据行中循环,当然您很可能只有一个匹配项。在所有其他情况下,它会立即被取消选中。使用以下命令:
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
与网格中的数据和控件相比,我还建议进行额外的验证。您是否尝试过调试,以查看在每次迭代中是否有正确的标签和复选框引用?