【问题标题】:DevExpress GridControl : Checkedit on Column TroubleDevExpress GridControl : Checkedit on Column Trouble
【发布时间】:2021-08-24 04:43:22
【问题描述】:

我尝试在运行时制作网格列,其中一个列使用 repositorycheckedit,我尝试了几种方法,但都没有奏效

这是我的代码

Dim dtSet As New DataSet()
        Dim dtTable As New DataTable("menu")
        Dim grCol As New DataColumn
        Dim rpChk As New RepositoryItemCheckEdit

        grCol.ColumnName = "smenu"
        grCol.Caption = "Menu"
        dtTable.Columns.Add("Menu")
        dtTable.Columns(0).ColumnName = "smenu"
        dtTable.Columns.Add("New")
        dtTable.Columns(1).ColumnName = "snew"

        dtTable.Rows.Add("Nama", 1)

        dtSet.Tables.Add(dtTable)

        gr.DataSource = dtSet
        gr.DataMember = "menu"

        rpChk.ValueChecked = 1
        rpChk.ValueUnchecked = 0
        grV.Columns("snew").ColumnEdit = rpChk

不知何故,应该显示复选框的列总是变灰,如果我尝试标记复选框,它会在失去焦点/更改单元格后变为空

请任何人。?谢谢

来源#2(修改后)仍然没有预期的结果

Dim dtTable As New DataTable("menu")
Dim rpChk As New RepositoryItemCheckEdit

dtTable.Columns.Add("Menu")
dtTable.Columns(0).ColumnName = "smenu"
dtTable.Columns.Add("New")
dtTable.Columns(1).ColumnName = "snew"

dtTable.Rows.Add("Nama", CSByte(1))
dtTable.Rows.Add("Nama1", CSByte(0))
dtTable.Rows.Add("Nama2", CSByte(1))
dtTable.Rows.Add("Nama3", CSByte(0))

gr.DataSource = dtTable

rpChk.ValueChecked = 1
rpChk.ValueUnchecked = 0

grV.Columns("snew").ColumnEdit = rpChk

【问题讨论】:

  • 这可能与您的问题无关,但DataSet 的用途是什么?只需创建DataTable 并将其直接分配给DataSource。我不使用那个特定的网格控件,但你可以用DataGridView 那样做,所以我怀疑这个是一样的。不要创建一个 DataSet 单独一个 DataTable 来完成这项工作。
  • 此外,您的代码在您创建/添加列到表的位置几乎没有意义。您创建了一个DataColumn 并设置了它的ColumnNameCaption,但是您从不使用它。然后,您添加两个具有名称的列,然后立即丢弃该名称并直接设置它们的ColumnName。那部分到处都是。只需创建表,然后调用Columns.Add 两次,指定名称和数据类型。如果您也想设置Caption,请在最后链接它,例如table.Columns.Add("FullName", GetType(String)).Caption = "Full Name".
  • @jmcilhinney 谢谢你,这是正确的,刚刚意识到你可以忽略数据集并使用数据表创建表。现在我修改了一些代码,但 checkedit 仍然无法按预期工作..(仍然灰显)

标签: vb.net devexpress-gridcontrol


【解决方案1】:

试了几次,也许有人需要回答 所以最后我解决了。创建列时,我们需要定义列的类型

dtTable.Columns.Add("Menu",GetType(String))
dtTable.Columns(0).ColumnName = "smenu"
dtTable.Columns.Add("New",GetType(Boolean))
dtTable.Columns(1).ColumnName = "snew"

事情终于奏效了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-16
    相关资源
    最近更新 更多