DataGridView中数据的引用

zeromess 2018-01-30 03:01:22

这是数据库的结构,将其绑定到DataGridView中
那么在VB.net 项目中如何定义一个类能够实现 Dim obj As类名 = Me.BindingSource.Current。以实现该类实例obj的成员和数据库表格的成员一一对应?
在下初级小白,前辈们指教指教!!!!!!!!
...全文
900 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zeromess 2018-03-05
  • 打赏
  • 举报
回复
入门自学不容易啊
X-i-n 2018-01-31
  • 打赏
  • 举报
回复
昨天的回复还漏了一个类定义。
Public Class Good
    Public Property Type As String
    Public Property Name As String
    Public Property Price As Double
    Public Property Amount As Double
    Public Property Sold As Double
    Public Sub New(_type As String, _name As String, _price As Double, _amount As Double, _sold As Double)
        Type = _type
        Name = _name
        Price = _price
        Amount = _amount
        Sold = _sold
    End Sub
End Class
X-i-n 2018-01-31
  • 打赏
  • 举报
回复
京东上随便找一本就可以。看VB的同时,最好能再了解一下C#,网上有很多解决方案是C#的。
zeromess 2018-01-30
  • 打赏
  • 举报
回复
引用 2 楼 Runnerchin 的回复:
还有另一种取巧的方法。DataRow有一个Tag属性,是Object类型的,可以手工为每一行的Tag绑定一个对应的Good对象。读取的时候,直接读取Tag,强制转换为Good,也一样用,这样可以省去每次选择不同的行都要即时创建对象的过程。
小弟刚学的VB.NET 基础,想要能够做出系统的东西来,能不能推荐一本关于VB.NET开发的书籍,要那种实用开发案例的(由入门到高级开发的那种),能够使我在练习的过程中更快的学习。!!!
X-i-n 2018-01-30
  • 打赏
  • 举报
回复
还有另一种取巧的方法。DataRow有一个Tag属性,是Object类型的,可以手工为每一行的Tag绑定一个对应的Good对象。读取的时候,直接读取Tag,强制转换为Good,也一样用,这样可以省去每次选择不同的行都要即时创建对象的过程。
X-i-n 2018-01-30
  • 打赏
  • 举报
回复
按你的绑定方式来做的话,需要读datagridview1.rows(行号).cells,然后读取每个cell.value,再用这个做初始化参数去new一个对象出来。比较省事的做法是,在得到数据源以后,直接为每条记录创建一个对象,存到List<T>里,然后把这个List做为datagridview的数据源,取的时候只要取DataGridRow.DataBoundItem转化一下就行。 如果要真正学习一下相关的内容,可以了解一下MVVM
   Dim goods As New List(Of Good)

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        With DataGridView1
            .Columns.Add(New DataGridViewTextBoxColumn With
                         {.DataPropertyName = "Type", .HeaderText = "类型"})
            .Columns.Add(New DataGridViewTextBoxColumn With
                         {.DataPropertyName = "Name", .HeaderText = "名称"})
            .Columns.Add(New DataGridViewTextBoxColumn With
                         {.DataPropertyName = "Price", .HeaderText = "单价"})
            .Columns.Add(New DataGridViewTextBoxColumn With
                         {.DataPropertyName = "Amount", .HeaderText = "库存"})
            .Columns.Add(New DataGridViewTextBoxColumn With
                         {.DataPropertyName = "Sold", .HeaderText = "订购"})
        End With

        '如果数据源是从数据库查出来的,那就遍历每一行DataRow
        '然后生成新的Good对象填充到goods列表,在这里假定数据存在table
        'Dim table As New DataTable
        'For Each row In table.Rows
        '    goods.Add(New Good(row("type"), row("name"), row("price"), row("amount"), row("sold")))
        'Next

        goods.Add(New Good("no1", "货品11", 10.2, 500, 300))
        goods.Add(New Good("no1", "货品12", 10.2, 500, 300))
        goods.Add(New Good("no2", "货品21", 10.2, 500, 300))
        DataGridView1.DataSource = goods

        '加载完成以后再绑定事件,防止空对象引用
        AddHandler DataGridView1.SelectionChanged, AddressOf DataGridView1_SelectionChanged
    End Sub

    Private Sub DataGridView1_SelectionChanged(sender As Object, e As EventArgs)
        Dim good As Good = CType(DataGridView1.CurrentRow.DataBoundItem, Good)
        '可以直接用Ctype转换选中记录为Good对象

        MessageBox.Show(
            String.Join(vbTab,
                        {"货名", good.Name, "类型", good.Type, "单价", good.Price,
                        "库存", good.Amount, "订购", good.Sold}))
    End Sub

1,451

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧