我想做一个在缴费情况表、月租收费窗口、临时收费录入窗口都能通用的目录树,但在月租收费窗口只显示月租收费的所有字节,在临时收费录入窗口只显示临时收费的所有字节,否则显示所有字节,我这样写红色标注报错。
窗口的AfterLoad事件改为:
Dim cmd As New SQLCommand
Dim dt As DataTable
'cmd.C '内部数据源,这行代码不需要
cmd.CommandText = "SELECT [_Identify],分类,住址_序号,住址_巷,住址_号,住址_房,姓名,Year(日期) As 年, Month(日期) As 月,手机号码,车牌号码,备注 Fro m {车辆基本信息}"
dt = cmd.ExecuteReader()
Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
If CurrentTable.Name = Tables("月租收费_Table1") Then
trv.BuildTree(dt,"住址_巷|住址_号|住址_房|姓名|手机号码|车牌号码","[分类] = '" & DataTables("分类").DataRows(0)("分类") & "'","住址_序号,住址_号,住址_房")
ElseIf CurrentTable.Name = Tables("临时收费录入_Table1") Then
trv.BuildTree(dt,"车牌号码","[分类] = '" & DataTables("分类").DataRows(1)("分类") & "'","车牌号码")
Else
trv.BuildTree(dt,"住址_巷|住址_号|住址_房|姓名|手机号码|车牌号码","[分类] = '" & DataTables("分类").DataRows(0)("分类") & "'","住址_序号,住址_号,住址_房")
trv.Nodes.Insert(DataTables("分类").DataRows(0)("分类"),0)
Do While trv.Nodes.Count > 1
trv.Nodes(1).MoveRight
Loop
Dim trv2 As WinForm.TreeView = e.Form.Controls("TreeView2")
'trv2.BuildTree(dt,"年|月|车牌号码","[分类] = '" & DataTables("分类").DataRows(1)("分类") & "'","年 DESC,月 DESC")
trv2.BuildTree(dt,"车牌号码","[分类] = '" & DataTables("分类").DataRows(1)("分类") & "'","车牌号码")
Dim node As WinForm.TreeNode = trv.Nodes.Add(DataTables("分类").DataRows(1)("分类"))
For i As Integer = trv2.Nodes.Count - 1 To 0 Step -1
Dim nn As WinForm.TreeNode = trv2.Nodes(i)
trv2.Nodes.RemoveAt(i)
node.basenode.Nodes.Add(nn.basenode)
Next
End If
目录树的NodeMouseClick事件改为:
Dim Vals() As String = e.Node.FullPath.Split("\")
Dim tr As Row
If e.Form.DropTable IsNot Nothing Then '如果下拉窗口是从表中打开
tr = e.Form.DropTable.Current '获取此表的当前行
Else '如果下拉窗口是通过DropdownBox打开
Dim nm As String = e.Form.DropDownBox.BindingField '获取绑定的字段
nm = nm.Split(".")(0) '获取绑定的表名
tr = Tables(nm).Current '获取此表的当前行
End If
If CurrentTable.Name = Tables("月租收费_Table1") Then
If e.Node.Level = 0 Or e.Node.Level = 1 Or e.Node.Level = 2 Or e.Node.Level = 3 Then '如果是顶层节点
Return '则返回
End If
Dim drs As List(Of DataRow) = DataTables("车辆基本信息").Select("分类 = '" & Vals(0) & "' And 住址_巷 ='" & Vals(1) & "' And 住址_号 ='" & Vals(2) & "'And 住址_房 ='" & Vals(3) & "'")
For Each dr As DataRow In drs
If dr IsNot Nothing Then
tr("分类") = dr("分类")
tr("住址_巷") = dr("住址_巷")
tr("住址_号") = dr("住址_号")
tr("住址_房") = dr("住址_房")
tr("姓名") = dr("姓名")
tr("车牌号码") = dr("车牌号码")
tr("固定电话") = dr("固定电话")
tr("手机号码") = dr("手机号码")
tr("备注") = dr("备注")
e.Form.DropDownBox.Value = tr("车牌号码")
e.Form.DropDownBox.CloseDropdown()
End If
Next
ElseIf CurrentTable.Name = Tables("临时收费录入_Table1") Then
If e.Node.Level = 0 Then '如果是顶层节点
Return '则返回
End If
Dim dr1 As DataRow = DataTables("车辆基本信息").Find("分类 = '" & Vals(0) & "' And 车牌号码 ='" & Vals(1) & "'")
If dr1 IsNot Nothing Then
tr("分类") = dr1("分类")
tr("亲属临时停车") = dr1("亲属临时停车")
tr("车牌号码") = dr1("车牌号码")
e.Form.DropDownBox.Value = tr("车牌号码")
e.Form.DropDownBox.CloseDropdown()
End If
Else
If Vals(0) = DataTables("分类").DataRows(0)("分类") Then
If e.Node.Level = 0 Or e.Node.Level = 1 Or e.Node.Level = 2 Or e.Node.Level = 3 Then '如果是顶层节点
Return '则返回
End If
Dim drs As List(Of DataRow) = DataTables("车辆基本信息").Select("分类 = '" & Vals(0) & "' And 住址_巷 ='" & Vals(1) & "' And 住址_号 ='" & Vals(2) & "'And 住址_房 ='" & Vals(3) & "'")
For Each dr As DataRow In drs
If dr IsNot Nothing Then
tr("分类") = dr("分类")
tr("住址_巷") = dr("住址_巷")
tr("住址_号") = dr("住址_号")
tr("住址_房") = dr("住址_房")
tr("姓名") = dr("姓名")
tr("车牌号码") = dr("车牌号码")
tr("固定电话") = dr("固定电话")
tr("手机号码") = dr("手机号码")
tr("备注") = dr("备注")
e.Form.DropDownBox.Value = tr("车牌号码")
e.Form.DropDownBox.CloseDropdown()
End If
Next
ElseIf Vals(0) = DataTables("分类").DataRows(1)("分类") Then
If e.Node.Level = 0 Then '如果是顶层节点
Return '则返回
End If
Dim dr1 As DataRow = DataTables("车辆基本信息").Find("分类 = '" & Vals(0) & "' And 车牌号码 ='" & Vals(1) & "'")
If dr1 IsNot Nothing Then
tr("分类") = dr1("分类")
tr("亲属临时停车") = dr1("亲属临时停车")
tr("车牌号码") = dr1("车牌号码")
e.Form.DropDownBox.Value = tr("车牌号码")
e.Form.DropDownBox.CloseDropdown()
End If
End If
End If
[此贴子已经被作者于2021/3/3 20:26:07编辑过]