DataGrid中CheckBox的问题

DengXingJie 2004-03-20 04:03:47
在数据据表中有一栏位的类型为Bit型。当与DataGrid连接后。DataGrid中相应的列自动变为CheckBox形状。
只是在点击CheckBox时会有三种状态出现:选中,灰色,不选
有什么办法只证它出现两种状态,即:选中,不选
谢谢!!!
...全文
58 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
xdd1125 2004-03-21
  • 打赏
  • 举报
回复
必须按NoReady(亦正亦偏)的做法!
LiloZhu 2004-03-21
  • 打赏
  • 举报
回复
可否寫一個完整的代碼出來,在第一列中用 combox 在 第三列中 用 checkbox ,誰有完整的例子....
DengXingJie 2004-03-21
  • 打赏
  • 举报
回复
不好意思纠正一下:
第0列的MappingName = MyTable.Columns(0).ColumnName
要改为MappingName = MyTableSub.Columns(0).ColumnName

DengXingJie 2004-03-21
  • 打赏
  • 举报
回复
按NoReady(亦正亦偏)的做法做了
在你这种情况下是可以实现
但如果把tbl换成既有的数据源就不行了
例如:
Dim MyTableSub As Data.DataTable
Dim MyDataSetSub As DataSet = New DataSet()
Dim MyDataAdapter As SqlDataAdapter
MyDataSetSub.Clear()
MyDataAdapter = New SqlDataAdapter(SqlStrSub, Cn)
MyDataAdapter.Fill(MyDataSetSub, SqlStrSub)
MyTableSub = MyDataSetSub.Tables(SqlStrSub)
SqlStrSub = "select 选择,期次,号码,开奖日期 from [P-彩票明细]
Dim TblStyle As New DataGridTableStyle()
Dim ColStyle As DataGridColumnStyle
Dim bColStyle As DataGridBoolColumn
Dim tbl As New DataTable()

With TblStyle
'.ReadOnly = True
.AllowSorting = False
.GridColumnStyles.Clear()
.BackColor = System.Drawing.Color.AliceBlue
.AlternatingBackColor = System.Drawing.Color.MintCream
.HeaderBackColor = System.Drawing.Color.LightGray
.SelectionBackColor = System.Drawing.Color.PaleTurquoise
.SelectionForeColor = System.Drawing.Color.Red
End With

'第0列
bColStyle = New DataGridBoolColumn()
With bColStyle
.AllowNull = False
.HeaderText = "选择"
.Width = 40
.MappingName = MyTable.Columns(0).ColumnName
.Alignment = HorizontalAlignment.Center
End With
TblStyle.GridColumnStyles.Add(bColStyle)


'第1列
ColStyle = New DataGridTextBoxColumn()
With ColStyle
.HeaderText = "期次"
.Width = 50
.ReadOnly = True
.NullText = ""
.MappingName = MyTableSub.Columns(1).ColumnName
.Alignment = HorizontalAlignment.Center
End With
TblStyle.GridColumnStyles.Add(ColStyle)

'第2列
ColStyle = New DataGridTextBoxColumn()
With ColStyle
.HeaderText = "号码"
.Width = 80
.ReadOnly = True
.NullText = ""
.MappingName = MyTableSub.Columns(2).ColumnName
.Alignment = HorizontalAlignment.Center
End With
TblStyle.GridColumnStyles.Add(ColStyle)

'第3列
ColStyle = New DataGridTextBoxColumn()
With ColStyle
.HeaderText = "开奖日期"
.Width = 80
.ReadOnly = True
.NullText = ""
.MappingName = MyTableSub.Columns(3).ColumnName
.Alignment = HorizontalAlignment.Center
End With
TblStyle.GridColumnStyles.Add(ColStyle)

With DataGridSub
.DataSource = MyTableSub
.TableStyles.Add(TblStyle)
.ColumnHeadersVisible = True
End With
End Sub

还请大家指点!!!
NoReady 2004-03-20
  • 打赏
  • 举报
回复
当然不行了,我有一段代码供你参考吧:
--------------------------------------
Dim TblStyle As New DataGridTableStyle
Dim ColStyle As DataGridColumnStyle
Dim bColStyle As DataGridBoolColumn
Dim tbl As New DataTable

dgd.TableStyles.Clear()

With TblStyle
.ReadOnly = True
.AllowSorting = False
.GridColumnStyles.Clear()
.BackColor = System.Drawing.Color.AliceBlue
.AlternatingBackColor = System.Drawing.Color.MintCream
.HeaderBackColor = System.Drawing.Color.LightGray
.SelectionBackColor = System.Drawing.Color.PaleTurquoise
.SelectionForeColor = System.Drawing.Color.Red
End With

'加入标题
With tbl
.Clear()
.Columns.Add("选择", GetType(Boolean))
.Columns.Add("期次")
.Columns.Add("号码")
.Columns.Add("开奖日期")
End With

'第1列
bColStyle = New DataGridBoolColumn
With bColStyle
.AllowNull = False
.HeaderText = "选择"
.Width = 40
.MappingName = tbl.Columns(0).ColumnName
.Alignment = HorizontalAlignment.Center
End With
TblStyle.GridColumnStyles.Add(bColStyle)


'第1列
ColStyle = New DataGridTextBoxColumn
With ColStyle
.HeaderText = "期次"
.Width = 50
.ReadOnly = True
.NullText = ""
.MappingName = tbl.Columns(1).ColumnName
.Alignment = HorizontalAlignment.Center
End With
TblStyle.GridColumnStyles.Add(ColStyle)
'第2列
ColStyle = New DataGridTextBoxColumn
With ColStyle
.HeaderText = "号码"
.Width = 80
.ReadOnly = True
.NullText = ""
.MappingName = tbl.Columns(2).ColumnName
.Alignment = HorizontalAlignment.Center
End With
TblStyle.GridColumnStyles.Add(ColStyle)
'第3列
ColStyle = New DataGridTextBoxColumn
With ColStyle
.HeaderText = "开奖日期"
.Width = 80
.ReadOnly = True
.NullText = ""
.MappingName = tbl.Columns(3).ColumnName
.Alignment = HorizontalAlignment.Center
End With
TblStyle.GridColumnStyles.Add(ColStyle)
With dgd
.DataSource = tbl
.TableStyles.Add(TblStyle)
.ColumnHeadersVisible = True
End With
DengXingJie 2004-03-20
  • 打赏
  • 举报
回复
不好意思
Dim bc As New DataGridBoolColumn
bc.AllowNull = False
应放在哪个事件中呢?
我放在Form_Load中好像没有用呢。
再如果在同一表单中同时有两个DataGrid,那是不是同时对两个都起作用?
谢谢!!
NoReady 2004-03-20
  • 打赏
  • 举报
回复
sorry!呵呵,自打自了:(
Dim bc As New DataGridBoolColumn
bc.AllowNull = False可行的

我原来是定义是:
Dim ColStyle As DataGridColumnStyle
ColStyle =new DataGridBoolColumn
所以就错了,请不要发生与我类似的错误?
NoReady 2004-03-20
  • 打赏
  • 举报
回复
请问楼上的:
bc.AllowNull = False能通过编译吗?
AntingZ 2004-03-20
  • 打赏
  • 举报
回复
Dim bc As New DataGridBoolColumn
bc.AllowNull = False

16,553

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧