If e.OldRange.RowSel <> e.NewRange.RowSel Then'如果选择的是不同的行
If e.OldRange.RowSel >= 0 AndAlso e.OldRange.Rowsel < e.Table.Rows.Count Then '而且原来选择的是一个有效的数据行
Dim r As Row = e.Table.Rows(e.NewRange.Rowsel) '获得新选择的行
Dim zfc As String = r("科目编码")
If zfc = "材料费" Then
Dim tb1 As New DropTreeBuilder
tb1.SourceTable = DataTables("材料价格系统") '指定目录树表
tb1.TreeSort = "材料排序"
tb1.TreeCols = "材料类别|材料类别2|备注" '指定用于生成目录树的列
tb1.SourceCols = "材料类别|材料类别2|材料名称|单位|单价|备注" '指定数据来源列
tb1.ReceiveCols = "辅助列1|辅助列2|项目构成|单位|单价|备注" '指定数据接收列
e.Table.Cols("项目构成").DropTree = tb1.Build()
ElseIf zfc = "人工费" Then
Dim tb2 As New DropTreeBuilder
tb2.SourceTable = DataTables("人工费系统") '指定目录树表
tb2.TreeCols = "幕墙形式|幕墙类别|人工费" '指定用于生成目录树的列
tb2.SourceCols = "幕墙形式|幕墙类别|人工费|单位|单价" '指定数据来源列
tb2.ReceiveCols = "辅助列1|辅助列2|项目构成|单位|单价" '指定数据接收列
e.Table.Cols("项目构成").DropTree = tb2.Build()
ElseIf zfc = "机械费" Or zfc = "间接费" Or zfc = "利润" Or zfc = "税金" Then
Dim tb3 As New DropTreeBuilder
tb3.SourceTable = DataTables("比率") '指定目录树表
tb3.TreeCols = "类别|名称" '指定用于生成目录树的列
tb3.SourceCols = "名称|类别|比率系数" '指定数据来源列
tb3.ReceiveCols = "项目构成|辅助列1|比率系数"'指定数据接收列
e.Table.Cols("项目构成").DropTree = tb3.Build()
End If
End If
End If