[英]DevExpress XtraGrid ExportToXlsx showing checked/unchecked for RepositoryItemCheckEdit instead of checkbox images
[英]How to implement multiple cell selection using RepositoryItemCheckEdit in Devexpress XtraGrid?
在选择下一个单元格的选中状态后,Devexpress网格视图存储库的选中状态会立即自动取消选择。
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
ConnectDatabase()
loadv()
End Sub
Private Overloads Sub loadv()
Dim DataAdapter5 As New MySqlDataAdapter
Dim DataSet1 As New DataSet
DataSet1.Clear()
Dim str1 As String = String.Format("SELECT `id`, `Name` FROM `mydb`.`mytable` ORDER BY Name ")
DataAdapter5 = New MySqlDataAdapter(str1, conn)
DataAdapter5.Fill(DataSet1)
' GridControl1.RefreshDataSource()
' GridControl1.Refresh()
GridControl1.DataSource = DataSet1
With GridControl1
.DataSource = DataSet1.Tables(0)
End With
GridView1.BestFitColumns()
End Sub
这是我的网格视图:
这是基础数据库表:
如何对Passed
和ResultsPending
列实施多个单元格选择?
因此,您有两列带有Passed
和ResultPending
复选框,但仅从数据库中加载ID
和Name
。 因此,您的2个复选框列未绑定到数据。 它们称为未绑定列 。
您必须自己维护未绑定列的状态。
因此,在设置复选框后,您还需要在代码隐藏的某处(某种形式的List
)中记录它的状态,然后在重新绘制表单时,需要将选中的状态数据提供回网格。
要实现这一探索:
希望这可以帮助。
然后使用属性将绑定源分配给网格控件。 现在,我需要将数据集表的列绑定到网格视图的列。 您可以通过打开“网格设计器”来实现。 单击列(主视图)->选择列,然后为每个列分配字段名。 您可以在“文件列表”中查看表列,在“列”组中查看Gird视图的列。 这是我的代码:
Public Class Form1 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load ConnectDatabase() loadView() End Sub Private Sub loadView() Dim enumerator As IEnumerator = Nothing dsOnDesign.Tables(0).Clear() Dim dataSetTemp As System.Data.DataSet dataSetTemp = New DataSet Dim da As New MySqlDataAdapter Dim str As String = "SELECT id, name, passed, resultPending FROM mydb.mytable" da = New MySqlDataAdapter(str, conn) da.Fill(dataSetTemp) Try enumerator = dataSetTemp.Tables(0).Rows.GetEnumerator() While enumerator.MoveNext() Dim current As DataRow = DirectCast(enumerator.Current, DataRow) Dim i As DataRow = Me.dsOnDesign.Tables(0).NewRow() i("ID") = Conversions.ToInteger(current(0)) i("Name") = current(1).ToString() i("Passed") = If(current(2) Is DBNull.Value, False, fbool(CBool(current(2)))) i("ResultPending") = If(current(3) Is DBNull.Value, False, fbool(CBool(current(3)))) dsOnDesign.Tables(0).Rows.Add(i) End While Finally If (TypeOf enumerator Is IDisposable) Then TryCast(enumerator, IDisposable).Dispose() End If End Try GridControl2.DataSource = dsOnDesign.Tables(0) End Sub Private Function fbool(ByVal bool As Boolean) As Boolean If bool = True Then Return True Else Return False End If End Function End Class
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.