作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我可能正在倒着看这个问题,但我还是很好奇。有没有办法根据 DataGridView
中当前显示的内容构建 DataTable
?
需要说明的是,我知道您可以执行此操作 DataTable data = (DataTable)(dgvMyMembers.DataSource);
但是这包括隐藏的列。我只想从显示的列构建它。
希望这是有道理的。
所以我最终尝试了几个答案的组合,因为这似乎是最好的。以下是我正在尝试的。基本上我是从数据源创建数据表,然后根据列是否可见向后工作。但是,在它删除一列后,我得到一个 Collection was modified;枚举操作可能不会在
。 foreach
的下一次迭代中执行
我很困惑,因为我没有尝试修改DataGridView
,只有DataTable
所以这是怎么回事?
DataTable data = GetDataTableFromDGV(dgvMyMembers);
private DataTable GetDataTableFromDGV(DataGridView dgv)
{
var dt = ((DataTable)dgv.DataSource).Copy();
foreach (DataGridViewColumn column in dgv.Columns)
{
if (!column.Visible)
{
dt.Columns.Remove(column.Name);
}
}
return dt;
}
最佳答案
嗯,你可以的
DataTable data = (DataTable)(dgvMyMembers.DataSource);
然后使用
data.Columns.Remove(...);
我认为这是最快的方法。这将修改数据源表,如果您不需要它,则需要复制表。另请注意,DataGridView.DataSource
不一定是 DataTable
类型。
关于c# - 如何从 DataGridView 构建 DataTable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6295161/
我是一名优秀的程序员,十分优秀!