2014-11-14 62 views
1

可以说我有一个Form有2个部分,Party Section(派对图像在哪里)和School部分(学校图像在哪里)。每个部分可以存储n张图像(所有图像都在我的Image_Table中的SQL Server中)。如何将数据从DataGridView传递到另一个VB.NET

所以这是我的问题。我有一个DataGridView在每一个部分,以示出了图像和两个填充方法:

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

和a:

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

两个DGV与相同表适配器,以便关联于一个填充方法执行时,填补了这两个dgvs。

我试图执行第一填充方法(填充dgvPartyImages和与一方的图像的dgvSchoolImages)中,从dgvPartyImages数据保存到一个dgvAux,执行第二方法(填充dgvPartyImages和与学校图像dgvSchoolImages),然后检索从德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传递到另一个DataGridView。

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

+0

什么问题? – 2014-11-14 19:44:41

+0

@SeanLange如何将数据从一个DataGridView传递给另一个 – smartdan 2014-11-14 19:52:32

回答

0

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

+0

感谢您的回答,但我不知道它如何解决我的问题。你可以再详细一点吗? – smartdan 2014-11-22 04:10:10

+0

也许我错了你想做什么。你会希望你的派对图像和你的学校图像都通过像以下属性的IImages这样的界面来实现:图像,身份证,以及派对或学校图像的第三枚枚举。然后,您可以将所有数据下载到一个List(Of IImages)列表中,您可以在其中调用AllImages。然后做: dgvPartyImages.DataSource = AllImages.Where(功能(IMG)img.Id = PartyId.ToString()和img.Type =党) dgvSchoolImages.DataSource = AllImages.Where(功能(IMG)img.Id = SchoolId.ToString()和img.Type = School) – Surreal8Developer 2014-11-25 22:39:36

+0

再次感谢,但我想要比这更简单的东西。 – smartdan 2014-12-06 21:40:37

0

我刚刚摆脱了填充方法,并通过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 
相关问题