以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助] 用目录操控表的增、改、删 哪里出问题了。  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=179499)

--  作者:dxjwlf
--  发布时间:2022/8/26 16:06:00
--  [求助] 用目录操控表的增、改、删 哪里出问题了。
   第一步:  菜单右键命令:  这一块运行正常。

    Case "增加"
        Dim tr As WinForm.TreeView = e.Form.Controls("TreeView1")
        Dim nd As WinForm.TreeNode = tr.SelectedNode
        Dim id As Integer = nd.index
        CurrentTable.AddNew
        
        If nd.ParentNode Is Nothing Then
            nd = tr.Nodes.add("新节点")
            tr.SelectedNode = nd
            CurrentTable.Current ("笔记分类") = nd.name
        Else
            nd = nd.ParentNode.Nodes.add("新节点")
            tr.SelectedNode = nd
            tr.Select 
            tr.BeginEdit
            Select Case nd.Level
                Case 1
                    CurrentTable.Current ("笔记分类") = nd.ParentNode.name
                    CurrentTable.Current ("笔记子项") = nd.name 
                Case 2
                    CurrentTable.Current ("笔记分类") = nd.ParentNode.ParentNode.name
                    CurrentTable.Current ("笔记子项") = nd.ParentNode.name
                    CurrentTable.Current ("子项实例") = nd.name
            End Select
        End If
        
        tr.BuildTree("学习笔记", "笔记分类|笔记子项|子项实例")
        tr.Nodes.Insert("显示所有行", 0)
        
        For Each nd1 As WinForm.TreeNode In tr.AllNodes
            If nd1.name = "新节点" Then
                tr.SelectedNode = nd1
                nd1.Expand
                tr.Select 
                tr.BeginEdit
            End If
        Next

第二步:目录树,aftereditnode事件  总是目录节点改名后,表字段不能同步更改。

e.Node.Name = e.Node.Text

If CurrentTable.Current.Locked = True Then
    MessageBox.Show ("已锁定,禁止编辑!")
    Return
End If 
Dim tr As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim dr As DataRow = e.Node.DataRow

If e.Node.ParentNode Is Nothing Then
    tr.SelectedNode = e.Node
    dr("笔记分类") = e.Node.Text
Else
    If e.Node.Level = 1 Then
        tr.SelectedNode = e.Node
        dr("笔记分类") = e.Node.ParentNode.Text
        dr("笔记子项") = e.Node.Text
    ElseIf e.Node.Level = 2 Then
        dr("笔记分类") = e.Node.ParentNode.ParentNode.Text
        dr("笔记子项") = e.Node.ParentNode.Text
        dr("子项实例") = e.NewText 
    End If
End If
















--  作者:有点蓝
--  发布时间:2022/8/26 16:25:00
--  
调试

e.Node.Name = e.Node.Text

If CurrentTable.Current.Locked = True Then
    MessageBox.Show ("已锁定,禁止编辑!")
    Return
End If 
Dim tr As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim dr As DataRow = e.Node.DataRow
msgbox(e.Node.ParentNode Is Nothing)
If e.Node.ParentNode Is Nothing Then
    tr.SelectedNode = e.Node
msgbox("1笔记分类=" & dr("笔记分类"))
    dr("笔记分类") = e.Node.Text
msgbox("2笔记分类=" & dr("笔记分类"))
Else
msgbox("e.Node.Level=" & e.Node.Level)
    If e.Node.Level = 1 Then
        tr.SelectedNode = e.Node
msgbox("3笔记分类=" & dr("笔记分类"))
        dr("笔记分类") = e.Node.ParentNode.Text
msgbox("4笔记分类=" & dr("笔记分类"))
        dr("笔记子项") = e.Node.Text
msgbox("5笔记子项=" & dr("笔记子项"))
    ElseIf e.Node.Level = 2 Then
msgbox("e.Node.ParentNode.ParentNode.Text=" & e.Node.ParentNode.ParentNode.Text)
        dr("笔记分类") = e.Node.ParentNode.ParentNode.Text
msgbox("7笔记分类=" & dr("笔记分类"))
msgbox("e.Node.ParentNode.Text=" & e.Node.ParentNode.Text)
        dr("笔记子项") = e.Node.ParentNode.Text
msgbox("8笔记分类=" & dr("笔记子项"))
msgbox("e.NewText=" & e.NewText)
        dr("子项实例") = e.NewText 
msgbox("9笔记分类=" & dr("子项实例"))
    End If
End If

--  作者:dxjwlf
--  发布时间:2022/8/26 17:06:00
--  
谢谢,找到问题了
 dr("笔记子项") = e.Node.Text  应改为:
dr("笔记子项") = e.NewText