我想基于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)
答案 0 :(得分:2)
你的问题不是演员:
dt = TryCast(dgvMyMembers.DataSource, DataTable)
但您的DataSource
不是DataTable
,而是数组:
dgvCarAccidentInjury.Rows.Add(New String() {"test1", "test2", "test3", "test4"})
因此,请确保DataGridView
已正确连接DataTable source
第一,例如:
dgvMyMembers.DataSource = dtSourceHere
可能是你的Form_Load()
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
dgvMyMembers.DataSource = dtSourceHere
End Sub
如果要将字符串添加到DataGridView,最好创建DataTable添加这些字符串,例如:
Dim dt As New DataTable
dt.Columns.Add("Names", GetType(String))
dt.Rows.Add("test1")
dt.Rows.Add("test2")
dt.Rows.Add("test3")
dt.Rows.Add("test4")
然后将其设为DataSource
的{{1}}:
DataGridView
您可以稍后在所需的 dgvMyMembers.DataSource = dt
上执行此操作:
TryCast()
答案 1 :(得分:2)
Dim DtGrid As DataTable
DtGrid = CType(dgrd_WWWH.DataSource, DataTable).Copy()
答案 2 :(得分:1)
你试过克隆桌子吗?如果您使用DataSource
设置DataTable
,则克隆原始文件。如果您有差异DataSource
- 它将无法转换DataSource
。
Dim dt As DataTable = originalDt.Clone()
答案 3 :(得分:0)
create procedure upd_agregar
(@idEmpresa int, @sucursal nvarchar(25),@direccion nvarchar(100),@telefono nvarchar (25),@email nvarchar(25))
as
declare @longitud int, @codEmpresa nvarchar(2),@codSucursal nvarchar (2)
--Generar codigo de empresa
IF len(CAST(@idEmpresa AS NVARCHAR(2))) < 2
SET @codEmpresa = CONCAT ('0', CAST(@idEmpresa AS NVARCHAR(2)))
ELSE
SET @codEmpresa = @idEmpresa
PRINT @codEmpresa
GO
-- EXEC upd_agregar 1, 'B', 'C', 'D', 'E'
-- Result: 01
答案 4 :(得分:0)
我已经尝试过这种方法,并且可以正常工作。
Dim dt As New DataTable
Dim dc As DataColumn = New DataColumn("MOBILENUMBER")
dc.DataType = System.Type.GetType("System.String")
dc.MaxLength = 15
dt.Columns.Add(dc)
For n As Integer = 0 To dgvMobiles.Rows.Count - 2
dtr = dt.NewRow()
dtr.Item("MOBILENUMBER") = dgvMobiles.Rows(n).Cells(0).Value
dt.Rows.Add(dtr)
Next
其中 dgbMobiles 是datagridview,我可以输入联系人的手机号码。
我希望是我们