如何将数据从DataGridView传递到另一个VB.NET
可以说我有一个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。
任何帮助将不胜感激,我一直在搜索没有任何结果。
您可以尝试下载所有数据一次,然后使用LINQ查询分隔数据。这里是学习LINQ的参考:http://msdn.microsoft.com/en-us/library/bb397926.aspx。他们提供了例子等。
感谢您的回答,但我不知道它如何解决我的问题。你可以再详细一点吗? – smartdan 2014-11-22 04:10:10
也许我错了你想做什么。你会希望你的派对图像和你的学校图像都通过像以下属性的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
再次感谢,但我想要比这更简单的东西。 – smartdan 2014-12-06 21:40:37
我刚刚摆脱了填充方法,并通过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
什么问题? – 2014-11-14 19:44:41
@SeanLange如何将数据从一个DataGridView传递给另一个 – smartdan 2014-11-14 19:52:32