以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]老问题有新问题!  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=12200)

--  作者:gaoyong30000
--  发布时间:2011/8/25 16:07:00
--  [求助]老问题有新问题!

e.Form.Controls("TextBox14").Value = e.Sender.value + 5000

 

之前请教过这样一个代码,后来通过表达式解决了。但是表达式只读,不太灵活(有时候有特殊情况需要改数据)

 

现在我把这个代码加进了  客户档案信息窗口里的 当前里程文本框 

发现一个问题,就是我如果在文本框输入数据,与之关联的下次保养公里数并没有实时变化。

                    后来看了帮助里有个 e.Sender.WriteValue()  但是试了好多次也没成功!

 

 

 

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:内控系统21.rar


--  作者:gaoyong30000
--  发布时间:2011/8/25 17:23:00
--  

如何解决~?


--  作者:gaoyong30000
--  发布时间:2011/8/25 19:48:00
--  

搞了一下午也没解决这问题 哎!


--  作者:czy
--  发布时间:2011/8/25 19:54:00
--  
TextBox14控件的ValueChanged代码设置成:e.Sender.WriteValue()不行吗?
--  作者:czy
--  发布时间:2011/8/25 19:56:00
--  
不过我感觉还是直接写入表中的下次保养公里数中好。
--  作者:布莱克朱
--  发布时间:2011/8/25 20:04:00
--  
如果我输入5000,那么结果是多少,10000?
--  作者:gaoyong30000
--  发布时间:2011/8/25 20:06:00
--  

错误代码位置:窗口,客户档案信息,TextBox14,ValueChanged

System.NullReferenceException: 未将对象引用设置到对象的实例。
   在 Microsoft.VisualBasic.CompilerServices.Symbols.Container.InvokeMethod(Method TargetProcedure, Object[] Arguments, Boolean[] CopyBack, BindingFlags Flags)
   在 Microsoft.VisualBasic.CompilerServices.NewLateBinding.CallMethod(Container BaseReference, String MethodName, Object[] Arguments, String[] ArgumentNames, Type[] TypeArguments, Boolean[] CopyBack, BindingFlags InvocationFlags, Boolean ReportErrors, ResolutionFailure& Failure)
   在 Microsoft.VisualBasic.CompilerServices.NewLateBinding.LateCall(Object Instance, Type Type, String MemberName, Object[] Arguments, String[] ArgumentNames, Type[] TypeArguments, Boolean[] CopyBack, Boolean IgnoreReturn)
   在 UserCode.ValueChanged_0cacff6f(ControlEventArgs e)

 

 

出错~。。。 e.Sender.WriteValue()

 

 


--  作者:gaoyong30000
--  发布时间:2011/8/25 20:06:00
--  

表我也试验过 没用  代码如下  您看下 datacolchanged

 

Select Case e.DataCol.Name
    Case "当前里程","下次保养公里数"
        Dim dr As DataRow
        If dr("当前里程")="" Then
            dr("下次保养公里数")= 3000
        Else
            dr("下次保养公里数")= dr("当前里程") + 5000
        End If
End Select

[此贴子已经被作者于2011-8-25 20:06:44编辑过]

--  作者:gaoyong30000
--  发布时间:2011/8/25 20:16:00
--  
以下是引用布莱克朱在2011-8-25 20:04:00的发言:
如果我输入5000,那么结果是多少,10000?

对的  我现在这个窗口有个毛病  比如 输入了5000 然后点击  TextBox14  就会出现10000

但是如果此时 我再修改5000的数据  TextBox14 还是显示10000  有问题!

 

最好实时的 例如:我想输入5000  当我输入5时  TextBox14 是5005;  50时 是5050.。。。。。


--  作者:布莱克朱
--  发布时间:2011/8/25 20:32:00
--  

Select Case e.DataCol.Name
    Case "当前里程","下次保养公里数"
        Dim dr As DataRow =e.DataRow
        If dr("当前里程")=0 Then
            dr("下次保养公里数")= 3000
        Else
            dr("下次保养公里数")= dr("当前里程") + 5000
        End If
End Select

 

你看看首先必须要定义 e.datarow  ,第二个就是dr("当前里程")=0  因为是数值必须为零,而不是空值  也就是= ""  ,明白不?