我需要根据特定条件删除DataGridView中的整个列。我的DataGridView列由数字(1,2和3)组成,条件是删除所有不包含(1,2和3)的列。例如,如果列只有(1和3),则应删除它。
我如何克服这个?当你确定下面的索引时,我经历过的很多线程都会被覆盖。
myGridView.columns.RemoveAt(index);
有人建议隐藏列而不是我想要的,我想从DataGridView中完全删除列。
答案 0 :(得分:1)
虽然使用DataGridView
的数据源完成工作会更好,但如果控件未绑定到数据源,您还可以使用linq从列中获取值并检查一些标准,例如:
dgv1.Columns.Cast<DataGridViewColumn>()
.ToList().ForEach(c =>
{
var values = dgv1.Rows.Cast<DataGridViewRow>().Where(r => !r.IsNewRow)
.Select(r=>r.Cells[c.Index].Value).ToList();
if (!values.Contains(1)) //your custom criteria
dgv1.Columns.Remove(c);
});
这是一个非常简单的测试。以这种方式加载dgv1
:
dgv1.ColumnCount = 2;
dgv1.Rows.Add(1, 2);
dgv1.Rows.Add(3, 4);
然后使用上面的代码删除列,它只删除最后一列。