让人抓狂的datagridview的问题。

jhonsonzhang 2010-10-04 08:08:43
问题:自定义列第一次无法赋值,需要2次调用过程才能赋值。
代码大致如下:
datagridview1.datasource=datatable1
dim dcol as new datagridviewcolumn
dcol.name="ColX"
datagridview1.columns.add dcol
for each drow as datagridviewrow in datagridview1.rows
drow.cells("colx").value="test1"
next
...全文
62 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
jhonsonzhang 2010-10-04
  • 打赏
  • 举报
回复
感谢如梦兄!还有4楼的朋友,问题解决!是忘了加上一句:
dcol.valuetype=system.type.gettype("system.string")
结贴!
但有时候微软真让人很郁闷,为什么第2次就可以了呢?
jhonsonzhang 2010-10-04
  • 打赏
  • 举报
回复
4楼的仁兄,我没有找到datagridview1.databind()?没有吧,是哪个版本里面有啊?
大飞飞虫 2010-10-04
  • 打赏
  • 举报
回复
楼主这段代码是动态的增加列,要注意处理好和DATABIND的顺序和影响。
2楼的方法可以解决问题,但是是另辟奇径。

动态增加列必须保证你的GV是有数据源绑定上的,否则BIND后会被数据源和设计时的栏位覆盖掉,楼主的问题在于

datagridview1.datasource=datatable1
datagridview1.databind(); //这句要放这里
dim dcol as new datagridviewcolumn
dcol.name="ColX"
datagridview1.columns.add dcol
for each drow as datagridviewrow in datagridview1.rows
drow.cells("colx").value="test1"
next
jhonsonzhang 2010-10-04
  • 打赏
  • 举报
回复
真的让人很抓狂,为什么要调用2次才正确呢,第一次没法正确显示,第二次就正确了。这个自增加列就是一个textboxcolumn.在绑定之前都使用了datacolumns.clear.郁闷之极。

非常感谢如梦兄能在第一时间回复。
jhonsonzhang 2010-10-04
  • 打赏
  • 举报
回复
如梦兄是直接修改了datatable,我这儿是直接绑的xml文件。当然也可以更改datatable,但是有些麻烦,因为其它地方也在用这个datatable,我其实只是想知道是什么原因导致的,我的代码错在什么地方。我在datagridview.databindingcomplete里面也试了,始终找不到原因。
wuyq11 2010-10-04
  • 打赏
  • 举报
回复
Dim csex As New DataGridViewComboBoxColumn()
csex.DataPropertyName = "sSex"
csex.HeaderText = "性别"
Dim dt As New DataTable()
dt.Columns.Add("sexname")
dt.Columns.Add("sexvalue")
Dim dr As DataRow = dt.NewRow()
dr(0) = "男"
dr(1) = "1"
dt.Rows.Add(dr)
Dim dr1 As DataRow = dt.NewRow()
dr1(0) = "女"
dr1(1) = "2"
dt.Rows.Add(dr1)
csex.DataSource = dt
csex.ValueMember = "sexvalue"
csex.DisplayMember = "sexname"
Me.datagridview1.Columns.Add(csex)

16,549

社区成员

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

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