DataGrid的怪问题……(windows form)<紧急求助!!分不够可以再加>

Sunny21 2004-11-22 02:53:22
定时器触发取最新的数据存入数据库,从数据库取数据填充到DataGrid,焦点在所运行的项目时不会发生问题。当有数据填充到DataGrid,我点击了某个单元格,然后我去操作别的事情(相当于当前运行的项目不是操作系统最上层的窗体了),定时器触发取最新的数据存入数据库全部正常,运行语句dgdPart.DataSource=dgdPartTable.DefaultView时就出异常,错误信息为“列AAA不属于表dgdPartTable”,列AAA即为我刚才单击的那个单元格所在的列。
...全文
201 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
Sunny21 2004-11-30
  • 打赏
  • 举报
回复
终于暂时解决,发现两种情况
1.如果自己给DataGrid装载了样式,在刷新DataGrid1之前,移除样式,刷新后添加样式。
DataGrid1.TableStyles.Clear()
DataGrid1.DataSource=DataGrid1Table.DefaultView
DataGrid1.TableStyles.Add(MyTableStyle)
2.如果没有给DataGrid装载过样式,在刷新DataGrid1之前,清数据源
DataGrid1.DataSource=Nothing
DataGrid1.DataSource=DataGrid1Table.DefaultView

Sunny21 2004-11-23
  • 打赏
  • 举报
回复
我把样式移除,问题依旧。请关注……
kissnono 2004-11-23
  • 打赏
  • 举报
回复
5555,楼主,我就是象你说的那么做的,
可是它不出错呀
Sunny21 2004-11-23
  • 打赏
  • 举报
回复
To:Kissnono(塔.拉夏的灵魂)
不对的,你可能不太清楚我说的意图。
你这样子做一下实验,当有数据填充到DataGrid1时,你单击某个单元格(相当于焦点放在那个单元格),然后开启一个别的软件比如Word你开始操作Word,在下一次定时检测触发前不要切换到运行的那个项目,自动会有异常报出,说某个列不属于DataGrid1的数据源
kissnono 2004-11-23
  • 打赏
  • 举报
回复
我的试验代码,请楼主检查(用的是sql server的northwind)

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Try
SqlDataAdapter1.Fill(DataSet11)
DataGrid1.DataSource = DataSet11._Region.DefaultView
Static bb As Boolean
Dim strCmd As String
If bb Then
strCmd = "Update Region Set RegionDescription='121' where RegionID=1"
Else
strCmd = "Update Region Set RegionDescription='232' where RegionID=1"
End If
bb = Not bb
Dim sqlcmd As New SqlClient.SqlCommand(strCmd, SqlConnection1)
sqlcmd.Connection.Open()
sqlcmd.ExecuteNonQuery()
sqlcmd.Connection.Close()
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End Sub
kissnono 2004-11-23
  • 打赏
  • 举报
回复
没弄明白怎么回事,我自己做试验都好用啊
Sunny21 2004-11-23
  • 打赏
  • 举报
回复
To:tihua(只想学好VBNET):
我到填充数据集为止,都不会有问题,就是执行dgdPart.DataSource=dgdPartTable.DefaultView发生异常,而且只有运行的项目不是操作系统顶层窗体的时候才会发生,如果在运行该项目的时候不做别的事情就不会发生
tihua 2004-11-23
  • 打赏
  • 举报
回复
给个现成的你试试,不知能否帮到你
sqlstr = "select * from m_wastage_in"
queryset.Clear()
Dim DataGrid1 As New DataGrid
queryset = GetData(sqlstr)
queryset1 = queryset.Tables(0).DefaultView
Me.DataGrid1.DataSource = queryset1
Sunny21 2004-11-23
  • 打赏
  • 举报
回复
UP!UP!UP!
Sunny21 2004-11-22
  • 打赏
  • 举报
回复
To:allanli(若尘):
DataGrid的确装载了样式,那是不是每次刷新数据后,我要重新装载一次样式
youlongzaitian 2004-11-22
  • 打赏
  • 举报
回复
我们目前也有同样的问题,还没有解决方案!
allanli 2004-11-22
  • 打赏
  • 举报
回复
如果DataGrid装载了样式,那么应该是DataGrid的一个BUG

移除样式后再添加就可以了
Latitude 2004-11-22
  • 打赏
  • 举报
回复
不是太肯定是什么问题,按说datagrid只是做表现层的工作,不会影响数据源的绑定问题,要不试试把数据源先指向空再指向新源?
dgdPart.DataSource=nothing
dgdPart.DataSource=dgdPartTable.DefaultView
  • 打赏
  • 举报
回复
大概在数据更新前没有刷新页面提交给服务器,服务器还在处理旧的操作?
没遇到过,不是很清楚。
Sunny21 2004-11-22
  • 打赏
  • 举报
回复
谢谢!帮UP!我自己也顶……
True1024 2004-11-22
  • 打赏
  • 举报
回复
关注,UP

16,554

社区成员

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

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