-- 作者:hbing1109
-- 发布时间:2013/4/9 10:02:00
-- [求助]如何让父表和子表同时变色?
表B是父表,表A是子表
子表里根据工序的不同 行的颜色不同, 我想让父表里根据货号完成的工序 也变成同样的颜色。
大神啊 求教啊!
首先非常感谢 muhua 大神的指点
根据实例 我明白了方法 但是我实例做出来之后却达不到那样效果。还请赐教!
以下是我的代码:
子表属性:
datacolchanged 方法:
Select Case e.DataCol.Name Case "磨床","镀铜","电雕","镀铬","打样","出厂" Dim dr As DataRow = DataTables("定版记录").Find("版号=" & e.DataRow("版号")) If e.DataRow("出厂") = True Then dr("到达工序") = "出厂" ElseIf e.DataRow.IsNull("打样") = False Then dr("到达工序") = "打样" ElseIf e.DataRow.IsNull("镀铬") = False Then dr("到达工序") = "镀铬" ElseIf e.DataRow.IsNull("电雕") = False Then dr("到达工序") = "电雕" ElseIf e.DataRow.IsNull("研磨") = False Then dr("到达工序") = "研磨" ElseIf e.DataRow.IsNull("镀铜") = False Then dr("到达工序") = "镀铜" ElseIf e.DataRow.IsNull("磨床") = False Then dr("到达工序") = "铁芯完成" End If End Select
drawcell 方法:
If e.Row("磨床") <> Nothing Then e.Style = "铁芯完成" End If If e.Row("镀铜") <> Nothing Then e.Style = "镀铜" End If If e.Row("研磨") <> Nothing Then e.Style = "研磨" End If If e.Row("电雕") <> Nothing Then e.Style = "电雕" End If If e.Row("镀铬") <> Nothing Then e.Style = "镀铬" End If If e.Row("打样") <> Nothing Then e.Style = "打样" End If If e.Row("出厂") = True Then e.Style = "完成" End If
父表属性还没设置,这个代码出现的问题是子表在工序里输入后 父表的“到达工序”里不显示所设置的数据,并且提示:
运行错误: 调用的目标发生了异常。
.NET Framework 版本:2.0.50727.5466 Foxtable 版本:2012.11.29.1 错误所在事件:表,工作记录,DataColChanged 详细错误信息: System.Reflection.TargetInvocationException: 调用的目标发生了异常。 ---> System.Data.SyntaxErrorException: 语法错误:“A124”运算符后缺少操作数。 在 System.Data.ExpressionParser.Parse() 在 System.Data.DataExpression..ctor(DataTable table, String expression, Type type) 在 System.Data.Select..ctor(DataTable table, String filterExpression, String sort, DataViewRowState recordStates) 在 System.Data.DataTable.Select(String filterExpression, String sort) 在 Foxtable.DataTable.Find(String OOlO11Oll10llO11, String O11l, Int32 OOO0O) 在 UserCode.DataColChanged(DataColEventArgs e) --- 内部异常堆栈跟踪的结尾 --- 在 System.RuntimeMethodHandle._InvokeMethodFast(Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner) 在 System.RuntimeMethodHandle.InvokeMethodFast(Object target, Object[] arguments, Signature sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner) 在 System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks) 在 System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) 在 Foxtable.DataTable.O0ll10O00l0O11011l0110O0(Object O01Ol1, DataColumnChangeEventArgs O)
————————————————————————————————————————————————————————————
还出现这个,这两个的版号是不一样的。
.NET Framework 版本:2.0.50727.5466 Foxtable 版本:2012.11.29.1 错误所在事件:表,工作记录,DataColChanged 详细错误信息: System.Reflection.TargetInvocationException: 调用的目标发生了异常。 ---> System.Data.EvaluateException: 无法在 System.String 和 System.Int32 上执行“=”操作。 在 System.Data.BinaryNode.SetTypeMismatchError(Int32 op, Type left, Type right) 在 System.Data.BinaryNode.BinaryCompare(Object vLeft, Object vRight, StorageType resultType, Int32 op, CompareInfo comparer) 在 System.Data.Select.Eval(BinaryNode expr, DataRow row, DataRowVersion version) 在 System.Data.Select.Evaluate(Int32 record) 在 System.Data.Select.FindFirstMatchingRecord() 在 System.Data.Select.GetBinaryFilteredRecords() 在 System.Data.Select.SelectRows() 在 System.Data.DataTable.Select(String filterExpression, String sort) 在 Foxtable.DataTable.Find(String OOlO11Oll10llO11, String O11l, Int32 OOO0O) 在 UserCode.DataColChanged(DataColEventArgs e) --- 内部异常堆栈跟踪的结尾 --- 在 System.RuntimeMethodHandle._InvokeMethodFast(Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner) 在 System.RuntimeMethodHandle.InvokeMethodFast(Object target, Object[] arguments, Signature sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner) 在 System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks) 在 System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) 在 Foxtable.DataTable.O0ll10O00l0O11011l0110O0(Object O01Ol1, DataColumnChangeEventArgs O)
[此贴子已经被作者于2013-4-9 23:51:46编辑过]
|