📄 frmdepmanage.vb
字号:
End Sub
'InitTree是用递归方法初始化TreeView控件的节点
Private Sub InitTree(ByRef nodes As TreeNodeCollection, _
ByVal sParentIndex As String)
Try
Dim tmpNode As TreeNode
Dim absIndex As String
Dim dvTemp As DataView = dvList.Table.DefaultView
'选出数据源中ParentIndex为sParentIndex数据行
Dim dataRows() As DataRow = _
dvList.Table.Select("ParentIndex = '" + sParentIndex + "'")
'循环添加TreeNode
For Each dr As DataRow In dataRows
'获得节点所需数据
tmpNode = New TreeNode
tmpNode.Text = dr("类别")
'用TreeNode的Tag属性保存与此节点相关的数据
tmpNode.Tag = CType(New TreeNodeData(dr("AbsIndex"), _
dr("ItemIndex"), dr("ItemLevel"), _
dr("ParentIndex"), dr("类别号"), dr("单位编号")), Object)
absIndex = dr("AbsIndex")
'添加节点
nodes.Add(tmpNode)
'递归调用
InitTree(nodes(nodes.Count - 1).Nodes, absIndex)
Next
Catch ex As Exception
MessageBox.Show("初始化TreeView失败")
End Try
End Sub
Private Sub trvList_AfterSelect(ByVal sender As Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles trvList.AfterSelect
txbName.Text = trvList.SelectedNode.Text
txbLKindCode.Text = CType(trvList.SelectedNode.Tag, TreeNodeData).KindCode
txbDepCode.Text = CType(trvList.SelectedNode.Tag, TreeNodeData).DepCode
End Sub
Private Sub btnModify_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnModify.Click
'判断修改条件
If txbLKindCode.Text.Trim().Length = 0 _
Or txbDepCode.Text.Trim.Length = 0 Then
Exit Sub
End If
'获得当前选中的节点
Dim tmpNode As TreeNode = trvList.SelectedNode
'对编码进行验证
Dim sTmp As String = txbLKindCode.Text.Trim
tmpNode = tmpNode.Parent
While tmpNode Is Nothing = False
sTmp = CType(tmpNode.Tag, TreeNodeData).KindCode.Trim + sTmp
tmpNode = tmpNode.Parent
End While
If sTmp.Trim.Length > iBits Then
'编码超长删除节点
trvList.SelectedNode.Remove()
MessageBox.Show("编码超长,已被删除!")
Else
'编码符合要求,修改相应节点
trvList.SelectedNode.Text = txbName.Text.Trim
CType(trvList.SelectedNode.Tag, TreeNodeData).KindCode = _
txbLKindCode.Text.Trim()
CType(trvList.SelectedNode.Tag, TreeNodeData).DepCode = _
sTmp
Me.txbDepCode.Text = sTmp
End If
End Sub
Private Sub btnAddBas_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnAddBas.Click
If txbLKindCode.Text.Trim().Length = 0 _
Or txbDepCode.Text.Trim.Length = 0 Then
Exit Sub
End If
Dim tmpNode As TreeNode
If txbLKindCode.Text.Trim.Length > iBits Then
MessageBox.Show("编码超长,已被删除!")
Else
tmpNode = New TreeNode(Me.txbName.Text.Trim)
trvList.Nodes.Add(tmpNode)
'设置新增节点的相关数据
tmpNode.Tag = _
CType(New TreeNodeData("", tmpNode.Index.ToString, "0", _
"-1", Me.txbLKindCode.Text.Trim, _
Me.txbLKindCode.Text.Trim), Object)
End If
End Sub
Private Sub btnAddEql_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnAddEql.Click
If txbLKindCode.Text.Trim().Length = 0 _
Or txbDepCode.Text.Trim.Length = 0 Then
Exit Sub
End If
Dim tmpNode As TreeNode = trvList.SelectedNode
Dim sTmp As String = txbLKindCode.Text.Trim
tmpNode = tmpNode.Parent
While tmpNode Is Nothing = False
sTmp = CType(tmpNode.Tag, TreeNodeData).KindCode.Trim + sTmp
tmpNode = tmpNode.Parent
End While
If sTmp.Trim.Length > iBits Then
MessageBox.Show("编码超长,已被删除!")
Else
tmpNode = New TreeNode(Me.txbName.Text.Trim)
trvList.SelectedNode.Parent.Nodes.Add(tmpNode)
tmpNode.Tag = _
CType(New TreeNodeData("", tmpNode.Index.ToString, "", _
"", Me.txbLKindCode.Text.Trim, sTmp), Object)
End If
End Sub
Private Sub btnAddSub_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnAddSub.Click
If txbLKindCode.Text.Trim().Length = 0 _
Or txbDepCode.Text.Trim.Length = 0 Then
Exit Sub
End If
Dim tmpNode As TreeNode = trvList.SelectedNode
Dim sTmp As String
sTmp = CType(tmpNode.Tag, TreeNodeData).KindCode.Trim
sTmp += txbLKindCode.Text.Trim
tmpNode = tmpNode.Parent
While tmpNode Is Nothing = False
sTmp = CType(tmpNode.Tag, TreeNodeData).KindCode.Trim + sTmp
tmpNode = tmpNode.Parent
End While
If sTmp.Trim.Length > iBits Then
MessageBox.Show("编码超长,已被删除!")
Else
tmpNode = New TreeNode(Me.txbName.Text.Trim)
trvList.SelectedNode.Nodes.Add(tmpNode)
tmpNode.Tag = _
CType(New TreeNodeData("", tmpNode.Index.ToString, "", _
"", Me.txbLKindCode.Text.Trim, sTmp), Object)
End If
End Sub
Private Sub btnSave_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnSave.Click
Dim result As String = ""
Dim absIndex As Integer = -1
Dim db As DataBase = New DataBase
'执行保存TreeView的SQL语句
Dim strSQL As String = " begin tran "
Try
strSQL += " select * into zzjgtemp from 组织机构编码表 "
strSQL += " go "
strSQL += " delete from 组织机构编码表 "
db.RunDelOrInsSQL(strSQL)
SaveTreeView(Me.trvList.Nodes, result, absIndex)
db.RunDelOrInsSQL(result)
strSQL = " update 组织机构编码表 set 拼音编码=b.拼音编码,"
strSQL += " 单位地址=b.单位地址,单位电话号码=b.单位电话号码,"
strSQL += " 开户银行=b.开户银行, 帐号=b.帐号,开户全称=b.开户全称"
strSQL += " from 组织机构编码表 as a, zzjgtemp as b"
strSQL += " where a.单位编号=b.单位编号"
strSQL += " drop table zzjgtemp "
strSQL += " commit "
db.RunDelOrInsSQL(strSQL)
Catch ex As Exception
MessageBox.Show("保存失败,编码重复或位数超长!")
db.RunDelOrInsSQL(" rollback ")
End Try
db.Dispose()
End Sub
Private Sub btnDel_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnDel.Click
Me.trvList.SelectedNode.Remove()
End Sub
'SaveTreeView是用递归方法保存TreeView控件的节点
'要注意nodes,result,absIndex三个参数都是Byref而不是ByVal
Private Sub SaveTreeView(ByRef nodes As TreeNodeCollection, _
ByRef result As String, ByRef absIndex As Integer)
'判断节点的Nodes集合是否为空
If nodes.Count = 0 Then
Return
End If
For Each tmpNode As TreeNode In nodes
'以下是要组合SQL语句
result += " insert into 组织机构编码表(类别,单位名称,"
result += " AbsIndex, ItemIndex, ItemLevel,"
result += " ParentIndex, 类别号,"
result += " 单位编号) values('" + tmpNode.Text + "','"
result += tmpNode.Text + "',"
'AbsIndex
absIndex += 1
'给treenode赋absIndex
CType(tmpNode.Tag, TreeNodeData).AbsIndex = _
absIndex.ToString.Trim()
result += absIndex.ToString.Trim + ","
'ItemIndex
result += tmpNode.Index.ToString.Trim + ","
'ItemLevel
If tmpNode.Parent Is Nothing Then
CType(tmpNode.Tag, TreeNodeData).ItemLevel = "0"
result += "0"
Else
result += (CInt(CType(tmpNode.Parent.Tag, _
TreeNodeData).ItemLevel) + 1).ToString.Trim
'给treenode赋ItemLevel
CType(tmpNode.Tag, TreeNodeData).ItemLevel = _
CInt(CType(tmpNode.Parent.Tag, _
TreeNodeData).ItemLevel) + 1
End If
'ParentIndex
result += ","
If tmpNode.Parent Is Nothing Then
CType(tmpNode.Tag, TreeNodeData).ParentIndex = "-1"
result += "-1"
Else
result += CType(tmpNode.Parent.Tag, _
TreeNodeData).AbsIndex.Trim
'给treenode赋ParentIndex
CType(tmpNode.Tag, TreeNodeData).ParentIndex = _
CType(tmpNode.Parent.Tag, TreeNodeData).AbsIndex
End If
result += ",'"
result += CType(tmpNode.Tag, _
TreeNodeData).KindCode.Trim + "','"
result += CType(tmpNode.Tag, _
TreeNodeData).DepCode.Trim + "') "
'递归调用
SaveTreeView(tmpNode.Nodes, result, absIndex)
Next
End Sub
End Class
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -