
TreeView的数据存储格式一般如下:
(节点编号,节点名称,节点值,上级节点编号)
遍历TreeView一般用递归算法
public void LoadTree(TreeNode tn)
{
if(tn == null) //加载根节点
{
//从数据库获取上级节点编号=0的DataSet
foreach(DataRow dr in dsTables[0]Rows)
{
TreeNode newNode=new TreeNode(dr["节点名称"] , dr["节点编号"]);
tnNodesAdd(newNode);
LoadTree(newNode);//递归
}
}
else
{
//获取当前节点的下一层节点DataSet
foreach(DataRow dr in dsTables[0]Rows)
{
TreeNode newNode=new TreeNode(dr["节点名称"] , dr["节点编号"]);
tnNodesAdd(newNode);
LoadTree(newNode);//递归
}
}
}
获取所有的子节点
1 children 获取所有的元素子节点,不包含文本节点,这个没有兼容问题,推荐使用
2 childNodes 对于不同版本的IE浏览器有兼容问题:
IE9+: 获取除了元素子节点,还有文本节点(包含换行),注释节点,非法节点(ul下包含p)
IE8-:获取所有的元素子节点,(IE8可以获取非法节点)
获取第一个子节点
1 firstChild: childNodes[0] ,跟childNodes的情况类似
2 children[0] 推荐使用
3 firstElementChild:IE9+才有的属性
4 兼容写法: elemfirstElementChild || elemfirstChild; 这个也会有点问题,如果没有子元素节点时需要判断
获取下一个节点
1 nextSibling:跟childNodes类似
2 nextElementSibling:IE9+才有的属性
3 兼容写法: elemnextElementSibling || elemnextSibling; 这个的问题是,当前元素是最后一个元素的时候需要判断
获取上一个节点
1 previousSibling
2 previousElementSibling
React提供的获取DOM元素的方法有两种,一是react-dom中的findDOMNode(),二是refs。
findDOMNode通常用于React组件的引用,其语法如下:
当组件被渲染到DOM中后,findDOMNode会返回该组件实例对应的DOM节点。
示例:
注:如果render()中返回null,那么findDOMNode()也返回null。findDOMNode只对已经挂载的组件有效。
refs多用于React组件内子组件的引用。使用ref获取DOM节点有两种情况:
(1)子组件为原生DOM组件:获取到的就是这个DOM节点。如下例,thisinput就获取到了当前 <input /> 节点。
通过thismyInput,我就可以对 <input /> 进行一系列 *** 作,比如让输入框聚焦:
注:refs也支持字符串格式:
通过thisrefsmyInput获取到节点。
(2)子组件为React组件,比如 <MyInput/> :获得的就是 <MyInput/> 的实例,因此就可以调用 <MyInput/> 的实例方法。
示例:
注:调用 <Comp /> 实例方法的方式:thisrefsmyCompmethod(),但并不建议这种调用方式。
bootstrap-treeview 有自带getChecked方法,可以返回所有checked的节点,源代码有次方法,可能开发者忘记写在github的说明上了treetreeview('getChecked');
以上就是关于急 在线等 遍历TreeView 获取所有节点全部的内容,包括:急 在线等 遍历TreeView 获取所有节点、IE9+获取节点的方式有兼容性要求、React中获取DOM节点的两种方法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)