【发布时间】:2018-07-24 12:53:04
【问题描述】:
我想根据 5 列数据表创建一个数据表。另外,我想删除最后一列(它是一个图像列)。
基本上,我想要的是(一个伪代码)
datatable = datagridview.datasource
我试过这个,但失败了:
Dim dt As New DataTable
dt = TryCast(dgvCarAccidentInjury.DataSource, DataTable)
和这个,
Dim dt As New DataTable(dgvCarAccidentInjury.DataSource)
我又失败了。
我在c#专栏上看到了这个,但我不知道如何将其转换为vb.net,也许这是解决方案但我不知道VB中的语法。
DataTable data = (DataTable)(dgvMyMembers.DataSource);
我可以通过手动循环来做到这一点,但是有没有像在 C# 上那样的简单方法?
编辑 我已经通过执行这行代码手动设置了我的datagridview的数据,
dgvCarAccidentInjury.Rows.Add(New String() {"test1", "test2", "test3", "test4"})
此外,还有第 5 列(图像列),实际上它是空的。对不起,我错过了这个重要的一点。
编辑
这个问题的解决方案是这样,通过手动循环。
Dim dt As New DataTable
Dim r As DataRow
dt.Columns.Add("a", Type.GetType("System.String"))
dt.Columns.Add("b", Type.GetType("System.String"))
dt.Columns.Add("c", Type.GetType("System.String"))
dt.Columns.Add("d", Type.GetType("System.String"))
For i = 0 To dgvCarAccidentInjury.Rows.Count - 1
r = dt.NewRow
r("a") = dgvCarAccidentInjury.Item(0, i).Value.ToString
r("b") = dgvCarAccidentInjury.Item(1, i).Value.ToString
r("c") = dgvCarAccidentInjury.Item(2, i).Value.ToString
r("d") = dgvCarAccidentInjury.Item(3, i).Value.ToString
dt.Rows.Add(r)
Next
其他解决方案:
Dim dt As New DataTable
dt = TryCast(yourdatagridview.DataSource, DataTable)
【问题讨论】:
-
你能告诉我们你是如何设置数据源的吗?
-
我已经编辑过了.. 嗯
-
是的,问题就在这里。您没有要从 DataGridView 中拉出的 DataTable。
-
如果您手动创建 datagridview 的行。然后可能更容易将手动创建一个数据表使用相同的数据,将其分配给 datagridvie.datasource 然后使用您的数据表...
标签: vb.net datagridview