【问题标题】:Create datacolumns from datagridview columns从 datagridview 列创建数据列
【发布时间】:2016-10-29 15:42:56
【问题描述】:

我有一个数据网格视图,其中包含我在设计时创建的列。

我现在想以编程方式创建一个与 gridview 中的列相同的数据表。

我尝试了以下代码。

Dim dataTable As New DataTable
For Each col As DataGridViewColumn In dgDocEntries.Columns
   dataTable.Columns.Add(col)
Next

这会引发编译错误:DataGridViewColumn 的值无法转换为 DataColumn。显然我尝试过强制转换类型,但没有成功。

我也不能使用数据源属性来克隆/复制,因为我手动设置行。

【问题讨论】:

  • 做相反的事情:创建一个包含所需列的 DT,将数据添加到数据表中,然后将其用作数据源 - DGV 将从该列创建列。如果数据不是来自或去往数据库,那么使用 List 数据源可能会更好。
  • @Plutonix 我做不到,因为有时我会根据来自数据库的数据设置数据源。抱歉一开始没有提到它。
  • 查看this post,它的作用正好相反:它从 DataTable 创建 DGV 列。您应该能够使用相同的属性来完成反向操作..
  • 从 DB 表创建 DT。添加或不添加数据,没关系。 dgv.DataSource = myDT 将为您在 dgv 中创建列。

标签: c# vb.net datagridview vb.net-2010


【解决方案1】:

这些方面的东西可以完成这项工作:

void CopyTableColumnsFromDGV(DataGridView dgv, DataTable dt)
{
    foreach (DataGridViewColumn dgvCol in dgv.Columns)
    {
        DataColumn dtCol = new DataColumn(dgvCol.Name, dgvCol.ValueType);
        dtCol.Caption = dgvCol.HeaderText;

        dt.Columns.Add(dtCol);
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-19
    • 2020-05-13
    • 2020-11-15
    • 1970-01-01
    • 2016-02-29
    • 1970-01-01
    相关资源
    最近更新 更多