繁体   English   中英

如何将数据从DataGridView传递到另一个VB.NET

[英]How to pass data from a DataGridView to another VB.NET

可以说我有一个包含2个部分的表格,“ Party Section”(聚会图片在哪里)和“ School”部分(学校图片在哪里)。 每个部分可以存储n个图像(所有图像都在SQL Server的Image_Table中)。

所以这是我的问题。 我在每个部分都有一个DataGridView来显示图像和两种填充方法:

Me.Image_TableTableAdapter.FillByPartyImages(Me.CAR_AuxDataSet.Image_Table, partyId)

和一个:

Me.Image_TableTableAdapter.FillBySchoolImages(Me.CAR_AuxDataSet.Image_Table, schoolId)

两个dgv与同一个表适配器相关联,因此,当执行一个fill方法时,将填充两个dgv。

我尝试执行第一个填充方法(用聚会图像填充dgvPartyImages和dgvSchoolImages),将数据从dgvPartyImages保存到dgvAux,执行第二个方法(用学校图像填充dgvPartyImages和dgvSchoolImages),然后从de dgvAux中检索数据到dgvPartyImages,但我无法使其正常工作

这是代码:

Dim dgvAuxReq As New DataGridView

Me.Image_TableTableAdapter.FillByPartyImages(Me.CAR_AuxDataSet.Image_Table, partyId)
dgvAux.DataSource = dgvPartyImages.DataSource
Me.Image_TableTableAdapter.FillBySchoolImages(Me.CAR_AuxDataSet.Image_Table, schoolId)
dgvPartyImages.DataSource = dgvAux.DataSource
'This code does not work

到目前为止的解决方案是用两个dgv填充

Me.Image_TableTableAdapter.Fill(Me.CAR_AuxDataSet.Image_Table)

然后按partyId和schoolId进行过滤:

Dim bsPary As New BindingSource
Dim bsSchool As New BindingSource

bsParty.DataSource = dgvPartyImages.DataSource
bsParty.Filter = "Id_Party = " & partyId.ToString
dgvPartyImages.DataSource = bsParty
bsSchool.DataSource = dgvSchoolImages.DataSource
bsSchool.Filter = "Id_School = " & schoolId.ToString
dgvSchoolImages.DataSource = bsSchool

可以,但是会使我的应用变慢。 因此,如何将数据从一个DataGridView传递到另一个。

任何帮助将不胜感激,我一直在寻找没有任何结果。

您可以尝试一次下载所有数据,然后使用LINQ查询来分离数据。 这是学习LINQ的参考: http : //msdn.microsoft.com/zh-cn/library/bb397926.aspx 他们提供了例子等等。

我只是摆脱了fill方法,并通过sql命令调用了图像。 两个dataGridView都填充有各自的图像。 现在,当我打电话时图像比以前更快。

Private Sub fillPartyImages()
    Dim img As New DataGridViewImageCell
    Dim row() As Object
    Dim connection As New Connection
    Dim sqlConnection As New SqlConnection(connection.readConection)
    Dim PictureCol As Integer = 0 
    Dim sqlCommand As New SqlCommand("SELECT Image FROM Image_Table WHERE Id_Party = @Id_Party", sqlConnection)
    sqlCommand.Parameters.AddWithValue("@Id_Party", partyId)
    Using sqlConnection
        sqlConnection.Open()
        Dim dr As SqlDataReader = sqlCommand.ExecuteReader()
        Do While dr.HasRows
            Do While dr.Read()
                Dim b(dr.GetBytes(PictureCol, 0, Nothing, 0, Integer.MaxValue) - 1) As Byte
                dr.GetBytes(PictureCol, 0, b, 0, b.Length)
                Dim ImgStream As New IO.MemoryStream(b)
                img.Value = Image.FromStream(ImgStream)
                row = {img.Value}
                dgvPartyImages.Rows.Add(row)
                ImgStream.Dispose()
            Loop
            dr.NextResult()
        Loop
        dr.Close()
        sqlConnection.Close()
    End Using
End Sub

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM