Foxtable(狐表)用户栏目专家坐堂 → [原创]重命名树


  共有11280人关注过本帖树形打印复制链接

主题:[原创]重命名树

帅哥哟,离线,有人找我吗?
aloby
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:190 积分:1597 威望:0 精华:0 注册:2011/5/19 10:05:00
[原创]重命名树  发帖心情 Post By:2011/6/4 8:48:00 [只看该作者]

狐爸:

重命名树是有例子的,没有问题.

我现在点击某节点,弹出一修改窗,其中也修改节点名,这时存不到树里,只能存到表里.请看一下:

Dim tr As WinForm.TreeView =  Forms("定位树").Controls("TreeView1")
Dim nd As WinForm.TreeNode = tr.SelectedNode
Dim td As winform.treenode
Dim id As Integer = nd.index
td = tr.nodes(id)
td.Text = Forms("修改树").Controls("TextBox1").text
Tables("商品").Current.Save()
tr.SelectedNode = nd '选择新插入的节点
tr.Select '选择目录树


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/6/4 8:56:00 [只看该作者]

树来自哪里? 是来自于一个文件吧,如果这样,再保存一下这个树就行啊:

http://help.foxtable.com/topics/1974.htm

 


 回到顶部
帅哥哟,离线,有人找我吗?
aloby
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:190 积分:1597 威望:0 精华:0 注册:2011/5/19 10:05:00
  发帖心情 Post By:2011/6/4 8:57:00 [只看该作者]

来自于表

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/6/4 9:04:00 [只看该作者]

来自于表就保存在表即可啊。

你做个简单的例子传上来,否则我无法理解。


 回到顶部
帅哥哟,离线,有人找我吗?
aloby
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:190 积分:1597 威望:0 精华:0 注册:2011/5/19 10:05:00
  发帖心情 Post By:2011/6/4 9:04:00 [只看该作者]

运行"定位树",双击某节点调出修改窗,修改节点后保存,保存不了.
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:新狐3.table


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/6/4 9:30:00 [只看该作者]

我写的代码:

Dim tr As WinForm.TreeView = Forms("定位树").Controls("TreeView1")
Dim nd As WinForm.TreeNode = tr.SelectedNode
Dim Vals() As String = e.Form.Controls("TextBox1").text.split("|")
For i As Integer = Vals.Length -1 To 0 Step - 1
    nd.text = vals(i)
    nd = nd.ParentNode
    If nd Is Nothing Then
        Exit For
    End If
Next
Tables("商品").Current.Save()

 

 

你之前的代码毫无逻辑可言,你不会保存是正常的,但是逻辑完全混乱,你看看你的代码:

 

Dim tr As WinForm.TreeView = Forms("定位树").Controls("TreeView1")
Dim nd As WinForm.TreeNode = tr.SelectedNode
Dim td As winform.treenode
Dim id As Integer = nd.index
td = tr.nodes(id)
td.Text = Forms("修改树").Controls("TextBox1").text
Tables("商品").Current.Save()
tr.SelectedNode = nd '选择新插入的节点
tr.Select '选择目录树

 

第二行执行,nd是选定节点,你要改名的就是这个选定节点,你却绕这么大一个圈子找了一个完全不像干的节点td来改名。
而且不要以为td和nd的index属性相同,就是同一个节点,index表示节点在父节点集合中的位置,以下面这个图片为例:家电产品、电脑配件,服务器三个节点,他们的index属性都是2,却是三个完全不同的节点。

 

图片点击可在新窗口打开查看

 

编程是严谨的,建议你从头到尾,细看两次帮助,否则你花的时间更多。

不要以为有个完整的例子就能帮到你,因为没有一个例子能将所有基本知识、所有的可能性、所有的控件涵盖进去。

 

我从不认为编程是一个有很高技术含量的工作,只是一项蓝领工作而已,我一直觉得,基本原理通了,其他都是“小菜”而已。

我接触过大量的客户,基本上越想快速上手的人越上不了手,最终花的时间更多。

[此贴子已经被作者于2011-6-4 9:33:38编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
aloby
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:190 积分:1597 威望:0 精华:0 注册:2011/5/19 10:05:00
  发帖心情 Post By:2011/6/4 9:46:00 [只看该作者]

你编的第三句我不太明白.另外,你的代码有点问题,请看修改前和修改后的情况.


图片点击可在新窗口打开查看此主题相关图片如下:capture1.bmp
图片点击可在新窗口打开查看


 


图片点击可在新窗口打开查看此主题相关图片如下:capture2.bmp
图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/6/4 9:56:00 [只看该作者]

不行,是因为手误,改一个字符就行了:

 

Dim tr As WinForm.TreeView = Forms("定位树").Controls("TreeView1")
Dim nd As WinForm.TreeNode = tr.SelectedNode
Dim Vals() As String = e.Form.Controls("TextBox1").text.split("\")
For i As Integer = Vals.Length -1 To 0 Step - 1
    nd.text = vals(i)
    nd = nd.ParentNode
    If nd Is Nothing Then
        Exit For
    End If
Next
Tables("商品").Current.Save()

 

Split在编程基础讲述的,参考:

http://help.foxtable.com/topics/1421.htm

http://help.foxtable.com/topics/0245.htm

 

 


 回到顶部
帅哥哟,离线,有人找我吗?
aloby
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:190 积分:1597 威望:0 精华:0 注册:2011/5/19 10:05:00
  发帖心情 Post By:2011/6/4 10:23:00 [只看该作者]

谢谢,可以了.但它的各级父节点不需要修改啊,所以我把你的代码改成为样了:

 

Dim tr As WinForm.TreeView = Forms("定位树").Controls("TreeView1")
Dim nd As WinForm.TreeNode = tr.SelectedNode
Dim Vals() As String = e.Form.Controls("TextBox1").text.split("\")
    nd.text = vals(Vals.Length -1)

Tables("商品").Current.Save()

 

另外,如果我改的不是最低层的节点,而是中间层的,就出现表中节点不对的问题:

南京\鼓楼1
南京\鼓楼\汉口路1
南京\鼓楼\上海路
南京\鼓楼\新节点


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/6/4 10:26:00 [只看该作者]

写个代码判断,只要vals.length等于node的level,就说明用户没有乱改。


 回到顶部