在VB.NET中将一个datagridview数据复制到另一个datagridview [英] Copying one datagridview data to another datagridview in VB.NET

查看:134
本文介绍了在VB.NET中将一个datagridview数据复制到另一个datagridview的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

亲爱的程序员,



我有2个表单,我想从Form1的datagridview转移一行到Form2的数据绑定数据网格。



我做了2个按钮用于试错,这是按钮的代码:



Button1:

Dear fellow programmers,

I have 2 forms and I want to transfer one row from Form1's datagridview to Form2's databound datagridview.

I made 2 buttons for trial and error purposes and this is the code of the buttons:

Button1:

For Each Col As DataGridViewColumn In DataGridViewX1.Columns
        frmEncodeDatabase.EncodingCompleteDataGridView.Columns.Add(DirectCast(Col.Clone, DataGridViewColumn))
    Next
    frmEncodeDatabase.EncodingCompleteDataGridView.Rows.Add(DataGridViewX1.Rows(0).Cells.Cast(Of DataGridViewCell).Select(Function(c) c.Value).ToArray)





Button2:



Button2:

Dim dr = DirectCast(DataGridViewX1.Rows(e.RowIndex).DataBoundItem, System.Data.DataRowView).Row
    frmEncodeDatabase.EncodingCompleteDataSet.Tables("EncodingComplete").ImportRow(dr)
    EncodingCompleteDataSetTableAdapters.EncodingCompleteTableAdapter.Update(EncodingCompleteDataSet, "EncodingComplete")





在按钮1中,此图像显示错误: http://postimg.org/image / j3een1ewv / [ ^ ]



在button2中,错误位于Update参数内的EncodingCompleteDataSet中,其中显示错误1EncodingCompleteDataS et'是一种类型,不能用作表达式。'



我该怎么办?我应该选择什么代码?



In the button1 the error is shown at this image: http://postimg.org/image/j3een1ewv/[^]

In the button2 the error is in the EncodingCompleteDataSet inside the Update argument, which says 'Error 1 'EncodingCompleteDataSet' is a type and cannot be used as an expression.'

What should I do then? What code should I choose?

推荐答案

Howdy All,

我想展示这个在包含两个DataGridViews之间移动数据的例子在不同的形式。这证明了Kschuler指出向数据集添加行与处理datagridview成员本身的想法。这也证明了(简要地)UI和数据操作的分离。它包含在一个Module中,它有一个用于移动数据的App类,一个表单类,一个用于引发事件的eventargs类和一个表示datagridview数据源类型的dataRec类(125行代码,所以它不是'很难消化)。



问候ron O.



Howdy All,
I would like to show this example of moving data between two DataGridViews which are contained within separate forms. This demonstrates the idea Kschuler pointed out "adding row to dataset" vs. dealing with the datagridview members themselves. Also this demonstrates (briefly) separation of UI and data operations. It is contained in a single Module, it has an App class that moves the data around, a form class, an eventargs class to raise a event and a dataRec class that represents the datagridview datasource type (125 lines of code, so it isn't to hard to digest).

Regards ron O.

Imports System.Windows.Forms
Module Module1
    Sub main()
        Dim app As New app
        Application.Run()
    End Sub
    Public Class app
        Dim _list1 As List(Of dataRec)
        Dim _list2 As List(Of dataRec)
        WithEvents _frm1 As MyForm
        WithEvents _frm2 As MyForm
        Public Sub New()
            MadeLists()
            AddForms()
        End Sub
        'This is where the rows are moved in/out
        Private Sub changeRow(sender As Object, e As myEventArgs) Handles _frm1.ChangeRow, _frm2.ChangeRow
            If _list1.Exists(Function(x) x.Name = e.Datarec.Name) Then
                _list1.Remove(e.Datarec)
                _list2.Add(e.Datarec)
            Else
                _list2.Remove(e.Datarec)
                _list1.Add(e.Datarec)
            End If
            RefreshGrids()
        End Sub
        'This updates the datagridview
        Private Sub RefreshGrids()
            Dim cm1 As CurrencyManager = DirectCast(_frm1.BindingContext(_frm1.dg.DataSource), CurrencyManager)
            cm1.Refresh()
            Dim cm2 As CurrencyManager = DirectCast(_frm2.BindingContext(_frm2.dg.DataSource), CurrencyManager)
            cm2.Refresh()
        End Sub
        Private Sub AddForms()
            _frm1 = New MyForm("frm_1", _list1)
            _frm2 = New MyForm("frm_2", _list2)
        End Sub
        Private Sub MadeLists()
            _list1 = New List(Of dataRec)
            _list1.Add(New dataRec("Ronald", "Programmer"))
            _list1.Add(New dataRec("Jon", "Eukalali Player"))
            _list1.Add(New dataRec("Dave", "Boss"))
            _list1.Add(New dataRec("Hans", "Motor Cycle Rider"))

            _list2 = New List(Of dataRec)
            _list2.Add(New dataRec("Abbee", "Scienetist"))
            _list2.Add(New dataRec("Gibbs", "Boss"))
            _list2.Add(New dataRec("Di Nozo", "Cool Guy"))
            _list2.Add(New dataRec("MC Gee", "One of US"))
        End Sub

        Friend Class myEventArgs
            Inherits EventArgs
            Private _datarec As dataRec
            Public Property Datarec() As dataRec
                Get
                    Return _datarec
                End Get
                Set(ByVal value As dataRec)
                    _datarec = value
                End Set
            End Property
            Public Sub New(ByVal data As dataRec)
                _datarec = data
            End Sub
        End Class
        Friend Class MyForm
            Inherits Form
            Public Event ChangeRow(ByVal sender As Object, ByVal e As myEventArgs)
            Friend WithEvents dg As System.Windows.Forms.DataGridView
            Friend WithEvents Button1 As System.Windows.Forms.Button
            Dim _list As List(Of dataRec)
            Public Sub New(ByVal text As String, ByVal list As List(Of dataRec))
                Me.Text = text
                _list = list
                init()
                dg.DataSource = _list
                Me.Show()
            End Sub
            Private Sub init()
                Me.dg = New System.Windows.Forms.DataGridView()
                Me.Button1 = New System.Windows.Forms.Button()
                CType(Me.dg, System.ComponentModel.ISupportInitialize).BeginInit()
                Me.SuspendLayout()
                Me.dg.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize
                Me.dg.Location = New System.Drawing.Point(2, 2)
                Me.dg.Name = "dg"
                Me.dg.Size = New System.Drawing.Size(322, 267)
                Me.Button1.Location = New System.Drawing.Point(118, 291)
                Me.Button1.Text = Me.Text
                Me.ClientSize = New System.Drawing.Size(326, 326)
                Me.Controls.Add(Me.Button1)
                Me.Controls.Add(Me.dg)
                Me.ResumeLayout(False)
            End Sub
            Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
                If dg.CurrentRow IsNot Nothing AndAlso dg.CurrentRow.Index > -1 Then
                    RaiseEvent ChangeRow(Me, New myEventArgs(_list(dg.CurrentRow.Index)))
                End If
            End Sub
        End Class
    End Class
    Public Class dataRec
        Private _name As String
        Public Property Name() As String
            Get
                Return _name
            End Get
            Set(ByVal value As String)
                _name = value
            End Set
        End Property
        Private _description As String
        Public Property Description() As String
            Get
                Return _description
            End Get
            Set(ByVal value As String)
                _description = value
            End Set
        End Property
        Public Sub New(ByVal name As String, ByVal desc As String)
            _name = name
            _description = desc
        End Sub
    End Class
End Module


这篇关于在VB.NET中将一个datagridview数据复制到另一个datagridview的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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