【发布时间】: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并设置了它的ColumnName和Caption,但是您从不使用它。然后,您添加两个具有名称的列,然后立即丢弃该名称并直接设置它们的ColumnName。那部分到处都是。只需创建表,然后调用Columns.Add两次,指定名称和数据类型。如果您也想设置Caption,请在最后链接它,例如table.Columns.Add("FullName", GetType(String)).Caption = "Full Name". -
@jmcilhinney 谢谢你,这是正确的,刚刚意识到你可以忽略数据集并使用数据表创建表。现在我修改了一些代码,但 checkedit 仍然无法按预期工作..(仍然灰显)
标签: vb.net devexpress-gridcontrol