桌上山珍海味无心食,床边绝色佳人懒得观!为何?因为吾在datagrid的cell内输入的数据,不能在该cell失去焦点之前,被程序同步识别!总是

baqiao1211 2003-08-20 08:53:30
我在datagrid的一个cell内输入“编号”,在对该cell的双击事件中,然后根据刚刚输入的该编号,用listbox列出与该编号对应的“品名”。相关代码如下:
’取出输入到 cell中的编号
在cell的双击事件中写如下代码:
BianHao = DataGrid1.Item(DataGrid1.CurrentCell)
’调用AddLstBPinMing子函数
AddLstBPinMing(BianHao)
-------------------------------------
下面是AddLstBPinMing的部分代码
Sub AddLstBPinMing(ByVal BianHao As String)
.............
CmdSelectPinMing.CommandText = "select distinct 品名 from tblMianLiaoPinMing where 编号 like '" + BianHao + "%'"
................
大概意思是:根据 BianHao变量取出符合条件的数据集,并将该数据集listbox绑定
出现的问题是:刚刚输入到cell中的数据不能在同一时间被付给BianHao变量,我跟踪了一下BianHao变量显示:BianHao是cell数据改变以前的数据。
只有当焦点离开了刚刚输入数据的该cell后,该cell内的数据才能被正确的赋给BianHao变量。
为什么cell中输入的数据,不能在焦点离开该cell前,赋给BianHao变量呢?
这个滞后性如何去改变呢?
...全文
22 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
W_W_Q 2003-08-23
  • 打赏
  • 举报
回复
好久不回答问题了,你不用照搬参考一下就行了:
'*****************************************
'功能:自己的数据验证处理过程
'参数:事件参数
'返回:无
'要点:读取Textbox的值及时改变
'****************************************
Private Sub dsData_ColumnChanging(ByVal sender As Object, ByVal e As System.Data.DataColumnChangeEventArgs)
' 处理数量的变更
If (e.Column.ColumnName.Equals("数量")) Then
Try
e.Row.Item("金额") = CInt(e.Row.Item("单价") * CDec(Me.DataGridTextBoxColumn5.TextBox.Text) + 0.5)
'e.Row.Item("金额") = CInt(e.Row.Item("单价") * e.Row.Item("数量") + 0.5)
Catch ex As Exception
MessageBox.Show(ex.Message, "计算金额出错!", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End If

End Sub


使用时,在读取数据集后:
'添加处理
AddHandler m_dsData.Tables(0).ColumnChanging, AddressOf dsData_ColumnChanging

关键是:
Me.DataGridTextBoxColumn5.TextBox.Text
要读的是TextBox的值,否则如果象我注释的下一句,则就象你说的结果
Anhowe 2003-08-23
  • 打赏
  • 举报
回复
楼上的有道理,可以试试
baqiao1211 2003-08-23
  • 打赏
  • 举报
回复
Sub DataGrid1_CurrentCellChanged
Select Case DataGrid1.CurrentCell.ColumnNumber
.............
end select
end sub
---------------------------------------------------------------------
写在以上事件中行吗?这可以作为DataGrid的Cell添加的Texthange事件吗?
sualtring 2003-08-22
  • 打赏
  • 举报
回复
桌上山珍海味放心食,床边绝色佳人用心观!为何?因为你为DataGrid的Cell添加的Texthange事件就可以搞定
danfree 2003-08-22
  • 打赏
  • 举报
回复
你用服务器端的程序来实现可能困难,要不就写在keydown里试试,够呛
应该用客户端的程序来实现,用javascrip。
很容易理解的,当然是退出才触发下一事件。
muzi600458 2003-08-22
  • 打赏
  • 举报
回复
帮你顶
baqiao1211 2003-08-22
  • 打赏
  • 举报
回复
依然在思考中。。。。。。。。。。。。
baqiao1211 2003-08-21
  • 打赏
  • 举报
回复
楼上说的有一定的道理,但是可能操作上不符合客户的需求。。。。。。。
Latitude 2003-08-21
  • 打赏
  • 举报
回复
你可能需要再写一个cell的textchange事件,用于及时地update数据集中的数据。
ganenpingsohucom 2003-08-21
  • 打赏
  • 举报
回复
要不当输入完毕后,执行datagird.readonly=true或把cell所做的修改,同时也修改 数据源(datatable),然后再帮定它试试
flxa 2003-08-21
  • 打赏
  • 举报
回复
不能帮你解决问题,但能帮你来吃来。。。。

16,552

社区成员

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

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