我有一个加载的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;
}
}
}
答案 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
如果你想对网格中的数据和控件做什么,我还建议进行额外的验证。