大佬教程收集整理的这篇文章主要介绍了vb.net – 将选中的行显示到另一个DataGridView中,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我的目标是仅将选定的行显示到另一个DataGridView中
我尝试使用SELEct并将结果添加到新的DataTable来完成此操作,但SELEct不起作用,因为缺少checkBoxcolumn.
这是我用来填充第一个DataGridView并添加checkBoxcolumn的代码:
Dim chk0 As New DataGridViewcheckBoxcolumn() With chk0 .AutoSizeMode = DataGridViewAutoSizecolumnMode.columnHeader .HeaderText = "Sel" .Name = "Sel" End With With Me.DataGridView1 .columns.Clear() .Datasource = DT_Events .columns.Insert(0,chk0) .columns("Event").AutoSizeMode = DataGridViewAutoSizecolumnMode.AllCells End With
然后,在检查了一些行之后,我尝试将选定的行显示到另一个DataGridView中:
Using DT_checked As DataTable = CType(Me.DataGridView1.Datasource,DataTablE).SELEct("Sel = 1").CopyToDataTable if DT_checked.Rows.Count > 0 Then With Me.DataGridView2 .Visible = True .Datasource = DT_checked End With Else MsgBox("No rows to show",MsgBoxStyle.Critical,"Error") End If End Using
标题中显示的概念,显示已检查的行…与将代码尝试执行时将行复制到另一个控件不同.这将显示如何使用一个Datasource显示每个DGV中的某些行.
如果您的数据来自数据库,则可以在SQL中添加一列:
' Access version Dim sql = "SELECT a,b,c,false AS SELEcted FROM SAMPLE"
这将为所有行添加一个初始化为false的布尔列,并将在DGV中显示为checkBox.
如果数据以其他方式进入DataTable,请手动添加列:
dtSample.columns.Add("SELEcted",GetType(Boolean)) dtSample.columns("SELEcted").DefaultValue = false ' we need to loop and set a value ' if you manually add a column For Each r As DataRow In dtSample.Rows r("SELEcted") = false Next
要在一个网格(或列表框或组合)中显示行,或者根据该值显示另一个网格,此代码将使用2个DataView.如果您正在使用视图,那么您经常需要随意更改RowFilter,因此请为表单创建一些全局:
Private dtSample As DataTable ' base table for BOTH DGVs Private dvsource As DataView ' ALL or SELEcted = false view Private dvDest As DataView ' SELEcted only ... ' build datatable and add the SELEcted Row (if needed) ... ' create source DV as SELEcted = false dvsource = New DataView(dtSample,"SELEcted=false","",DataViewRowState.CurrentRows) ' create SELECTED DV as SELEcted = True dvSELEcted = New DataView(dtSample,"SELEcted=True",DataViewRowState.CurrentRows) dgv1.Datasource = dvsource dgv2.Datasource = dvSELEcted
dvsource是可选的.如果您希望在第一个DGV中显示所有行,那么您就是DataView(根据问题,这似乎是这种情况).
为了便于说明,设置此项以便在DGV1中检查项目时它们会“消失”(因为它们不再符合SELEcted = false标准),并自动出现在DGV2中(因为现在它们符合该标准.结果:
在底部DGV中未选中/未选中的行将滑回到顶部DGV.
这很经济.您不仅不必运行任何代码来向第二个DGV添加或移动行,而且您不会复制DataRows和新的DataTable来执行此操作.通过TaskManager(粗略但指示性),内存量与SELEcted Rows的变化大致相同;当手动复制它们时,它会在您创建包含相同相同数据的DataRows副本时慢慢爬行.
以上是大佬教程为你收集整理的vb.net – 将选中的行显示到另一个DataGridView中全部内容,希望文章能够帮你解决vb.net – 将选中的行显示到另一个DataGridView中所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。