【发布时间】:2016-04-16 21:23:14
【问题描述】:
我想改进此代码,其目标是像 Excel 过滤器一样工作。如果所选行的所有复选框都为真,则函数(由按钮触发)将它们全部设置为假,如果它们都为假,则将它们设置为真,并且如果其中至少一个为false或true,那么它们都变成了真的。但是我的代码只有在它们都是true 或false 时才有效。另一个条件并不总是有效,这是因为代码的最后一部分没有抛出正确的结果。
复选框位于第 3 列,从 7 到 19 共 21 个。
public void seleciona_check()
{
for (int i = 7; i < grid_lic.ColumnCount-1 ; i++)
{
for (int j = 7; j < grid_lic.ColumnCount - 1; j++)
{
if (grid_lic.CurrentRow.Cells[j].Value.ToString() == grid_lic.CurrentRow.Cells[i].Value.ToString())
{
if (grid_lic.CurrentRow.Cells[i].Value.ToString() == "True")
{
Convert.ToBoolean(grid_lic.CurrentRow.Cells[i].Value = false);
Convert.ToBoolean(grid_lic.CurrentRow.Cells[3].Value = false);
}
else if (grid_lic.CurrentRow.Cells[i].Value.ToString() == "False")
{
Convert.ToBoolean(grid_lic.CurrentRow.Cells[i].Value = true);
Convert.ToBoolean(grid_lic.CurrentRow.Cells[3].Value = true);
}
}
else if (grid_lic.CurrentRow.Cells[j].Value.ToString() != grid_lic.CurrentRow.Cells[i].Value.ToString())
{
Convert.ToBoolean(grid_lic.CurrentRow.Cells[i].Value = true);
Convert.ToBoolean(grid_lic.CurrentRow.Cells[j].Value = true);
Convert.ToBoolean(grid_lic.CurrentRow.Cells[7].Value = true);
Convert.ToBoolean(grid_lic.CurrentRow.Cells[3].Value = true);
}
}
}
}
【问题讨论】:
-
您能否分享有关此问题的更多信息。例如网格的屏幕截图可能有助于理解实际问题。
-
我已经插入了数据网格的图像。当我选择所有复选框为真(或填充)的行并应用过滤器时,它们不会变为假。
-
第 3 列对应于 'bloqueado' 列。我更改了它的索引,使其显示在数据网格的位置 6
标签: c# checkbox datagridview filter datagrid