1、参数列设置了表达式:
Parent(A).参数值这样该列的值就等于父表参数列的值,这是无法更改的。
2、表达式列是不会触发DataColChanged的事件的,既然该列的值来自于父表,那么实际上该列的值就取决于关联列“参数代号”,所以代码可以改为:
Dim dr As DataRow = e.DataRow
Select Case e.DataCol.Name
Case "参数代号"
dr("表达式") = "W" & "-" & dr("参数值") & "*" & "2"
End Select
那用什么方法 才能解决 比如: 得到sc2-sc1 的值呢
1. 不明白你的意思!~
再说,你的父表没有 CS2-CS1 子表怎么会有???
2. 代码应放在‘参数明细’表里:datacolchanged:::::
Dim dr As DataRow = e.DataRow
Select Case e.DataCol.Name
Case "参数值"
dr= datatables("表达式明细").find("[参数代号] = '" & currentTable.Current("参数代号") & "'")
If dr IsNot Nothing Then
dr("表达式") = "W" & "-" & dr("参数值") & "*" & "2"
end if
End Select
上面只对找到的子表的一条记录有效,要对所有‘参数代码’相同的行有效,这样:
Select Case e.DataCol.Name
Case "参数值"
Dim drs As List(Of DataRow)
drs = DataTables("表达式明细").Select("[参数代号] = '" & currentTable.Current("参数代号") & "'")
For Each dr As Datarow In drs
dr("表达式") = "W" & "-" & dr("参数值") & "*" & "2"
Next
End Select
[此贴子已经被作者于2009-5-25 18:28:08编辑过]
参数值列改为:数据列,字符型:
Dim T,T1 As String
Dim dr As DataRow = e.DataRow
Select Case e.DataCol.Name
Case "参数代号"
if dr.Isnull("参数代号")=False then
if dr("参数代号").Contains("-") then
for each T1 In dr("参数代号").split("-")
T = T & "-" & DataTables("参数明细").Find("参数代号 = '" & T1 & "'")("参数值")
Next
T = T.Trim("-")
else
T = DataTables("参数明细").Find("参数代号 = '" & dr("参数代号") & "'")("参数值")
end if
dr("参数值") = T
dr("表达式") = "W" & "-" & dr("参数值") & "*" & "2"
else
dr("参数值") = Nothing
dr("表达式") = ""
end if
End Select
[此贴子已经被作者于2009-5-25 18:41:34编辑过]
以下是引用hlxz在2009-5-25 17:42:00的发言:
那用什么方法 才能解决 比如: 得到sc2-sc1 的值呢
这个值是从父表中取得的(Parent(A).参数值),父表是要输入的呀~ ?