以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 某一列的内容被更改后问题 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=92845) |
-- 作者:落叶孤影 -- 发布时间:2016/11/14 20:48:00 -- 某一列的内容被更改后问题 我在表的DataColChanged事件 写了下面的代码:但为什么总是弹出两次提示呢?请老师帮忙看看是什么问题?谢谢! If e.DataRow("科目代码") = Nothing Then Return End If Select Case e.DataRow("科目代码").length Case "4" e.DataRow("科目级次") = "1" Case "6" e.DataRow("科目级次") = "2" Case Else e.DataRow("科目代码") = Nothing e.DataRow("科目级次") = Nothing MessageBox.Show("请重新输入4或6位数的科目代码!","错误!",MessageBoxButtons.OK,MessageBoxIcon.Error) End Select |
-- 作者:有点蓝 -- 发布时间:2016/11/14 20:53:00 -- 试试 If e.DataRow.isnull("科目代码") Then
Return End If |
-- 作者:落叶孤影 -- 发布时间:2016/11/15 21:11:00 -- 上面的问题解决了,但下在该事件中的另一段代码不会写了,还请老师给看看下面代码该怎么写?谢谢! If CurrentTable.Current.DataRow.RowState = DataRowState.Added Then If e.DataCol.Name = "科目代码" Then \' 如果发生变化的是科目代码列 Dim nw As String = e.NewValue Dim dr As String = e.DataRow("科目代码") If nw.Contains(dr) Then \' 如果新输入的值包含当前列中的值 Dim drs As DataRow drs = e.DataTable.Find() \' 找到包含值的行==========此处不会写代码,请老师指点!谢谢! If drs IsNot Nothing Then \' 如果找到 drs("是否明细") = False \' 将该行是否明细列设为False Else End If Else End If End If Else End If |
-- 作者:有点蓝 -- 发布时间:2016/11/15 21:21:00 -- 没看懂你的逻辑,不知道你要找什么 |
-- 作者:落叶孤影 -- 发布时间:2016/11/15 21:56:00 -- 我的意思是:比如当前表的科目代码列有一行数据是1001,我如果新增了一行,在新增行的科目代码列输入100101时,1001行对应的"是否明细"列为fals |
-- 作者:有点蓝 -- 发布时间:2016/11/15 22:16:00 -- 没有办法判断,100101的前缀是1001还是100还是10010 |
-- 作者:落叶孤影 -- 发布时间:2016/11/15 22:29:00 -- 前缀是1001也就是新输入值的前4个字符! |
-- 作者:有点蓝 -- 发布时间:2016/11/15 22:45:00 -- If e.DataCol.Name = "科目代码" AndAlso e.DataRow.IsNull("科目代码") = False AndAlso e.DataRow.RowState = DataRowState.Added AndAlso e.DataRow("科目代码").Length > 4 Then \' 如果发生变化的是科目代码列 Dim nw As String = e.NewValue If e.DataTable.Find("科目代码=\'" & nw.SubString(0,4) & "\'") IsNot Nothing Then e.DataTable.ReplaceFor("是否明细",False,"科目代码=\'" & nw.SubString(0,4) & "\'") End If End If
[此贴子已经被作者于2016/11/15 22:45:05编辑过]
|
-- 作者:落叶孤影 -- 发布时间:2016/11/15 22:58:00 -- 多谢,请早点休息!注意身体!晚安! |