繁体   English   中英

如何在Devexpress XtraGrid中使用RepositoryItemCheckEdit实现多个单元格选择?

[英]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

这是我的网格视图:

Form1加载视图

这是基础数据库表:

警报表并上传新的屏幕截图 MyDatabase的

如何对PassedResultsPending列实施多个单元格选择?

因此,您有两列带有PassedResultPending复选框,但仅从数据库中加载IDName 因此,您的2个复选框列未绑定到数据。 它们称为未绑定列

您必须自己维护未绑定列的状态。

因此,在设置复选框后,您还需要在代码隐藏的某处(某种形式的List )中记录它的状态,然后在重新绘制表单时,需要将选中的状态数据提供回网格。

要实现这一探索:

  1. GridControl.CustomUnboundColumnData事件 -请注意,它支持读写案例。
  2. CheckEdit的未绑定布尔值列
  3. 启用MultiSelect模式的CheckEdit的行为
  4. 在DX 支持论坛中搜索使用关键字的更多结果:“ checkedit unbound”

希望这可以帮助。

  1. 从工具箱创建绑定源。
  2. 创建了新的无类型数据集(使用工具箱命名为dsOnDesign),并在数据集中创建了表。 然后在表中创建列。
  3. 将数据集分配为数据源,将表分配为绑定源的数据成员。
  4. 然后使用属性将绑定源分配给网格控件。 现在,我需要将数据集表的列绑定到网格视图的列。 您可以通过打开“网格设计器”来实现。 单击列(主视图)->选择列,然后为每个列分配字段名。 您可以在“文件列表”中查看表列,在“列”组中查看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.

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