VB.Net Datagridview到数据表 [英] VB.Net Datagridview to Datatable

查看:43
本文介绍了VB.Net Datagridview到数据表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想根据5列数据表创建一个数据表.另外,我想删除最后一列(它是图像列).

I wanted to create a datatable based from a 5 column datatable. Also, I would like to remove the last column (it is an image column).

基本上,我想拥有的是(一个伪代码)

Basically, what I wanted to have is ( a pseudocode )

datatable = datagridview.datasource


我已经尝试过了,但是失败了:


I have tried this, but failed:

Dim dt As New DataTable
dt = TryCast(dgvCarAccidentInjury.DataSource, DataTable)


和这个,


And this,

Dim dt As New DataTable(dgvCarAccidentInjury.DataSource)


我又一次失败了.我在c#列上看到了此内容,但我不知道如何将其转换为vb.net,也许这是解决方案,但我不知道VB中的语法.


Again I failed. I saw this on the c# column but I don't know how to convert it to vb.net, maybe this is the solution but I don't know the syntax in VB.

DataTable data = (DataTable)(dgvMyMembers.DataSource);

我可以通过手动循环来做到这一点,但是有没有像在C#上那样简单的方法呢?

I can do it by manually looping but is there an easy way like how it is on C#?


编辑通过执行以下代码行,我已经手动设置了datagridview的数据,

EDIT I have set my datagridview's data manually by doing this line of code,

dgvCarAccidentInjury.Rows.Add(New String() {"test1", "test2", "test3", "test4"})

此外,还有第5列(图像列),实际上它是空的.抱歉,我错过了这一重要要点.

Also, there is a 5th column (an image column), actually it is empty. Sorry I have missed this important point out.

编辑

此问题的解决方案是通过手动循环实现.

the solution for this problem is this, by manually looping.

    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)

推荐答案

您的问题不是强制转换:

Your problem is not the casting:

 dt = TryCast(dgvMyMembers.DataSource, DataTable)

但是您的 DataSource 不是 DataTable ,而是字符串数组:

dgvCarAccidentInjury.Rows.Add(New String() {"test1", "test2", "test3", "test4"})

因此,请确保您的 DataGridView 已正确连接 DataTable源 FIRST ,例如:

So, make sure that your DataGridView was properly connected a DataTable source FIRST, like:

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添加这些字符串,例如:

If you want to add your string to your DataGridView, you are better off creating the DataTable add those strings, like:

    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")

然后将其作为 DataGridView DataSource :

    dgvMyMembers.DataSource = dt

然后您可以稍后在所需的 TryCast()上进行操作:

You could do then later on the TryCast() that you desired:

    Dim dtNew As New DataTable
    dtNew = TryCast(dgvMyMembers.DataSource, DataTable)

这篇关于VB.Net Datagridview到数据表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆