EXT.NET循环并且选中TreePanel的某些值
来源:互联网 发布:php面向对象接口 编辑:程序博客网 时间:2024/06/05 09:21
之前公司项目做了一个这个,不过我发现有个BUG,就是只能选到2级,然后在下级就不能选中了。不过我这人就是倔脾气来了就非要弄出来。可能一下方法不太完美,但是可以实现,欢迎大家提供更好的方法以及建议。
先说一说前台代码:
先是一个ext:DropDownField控件, <Component>里面嵌套了ext:TreePanel控件。下面只贴ext:TreePanel代码
<ext:TreePanel ID="OptionOrgTree" runat="server" AutoScroll="true" ContainerScroll="true"
RootVisible="false" UseArrows="true" Animate="true" Height="280">
<Store>
<ext:TreeStore ID="OptionOrgStore" runat="server">
<Proxy>
<ext:AjaxProxy Url="/Report/OrgProfit/GetOrgList">
</ext:AjaxProxy>
</Proxy>
<Parameters>
参数,你们懂的
</Parameters>
<Listeners>
<BeforeLoad Handler="SelectedCurrentNodes(App.OptionOrgTree, operation)" />
<Load Handler="SetDefaultNodes(App.OptionOrgTree,node)" />
</Listeners>
</ext:TreeStore>
</Store>
<Listeners>
<CheckChange Fn="dbchangeFrom" />
<Load Handler="treeLoad(item,node,records,successful,options)" />
</Listeners>
<View>
<ext:TreeView ID="TreeView1" runat="server" LoadMask="true" LoadingText="loading...">
</ext:TreeView>
</View>
<SelectionModel>
<ext:TreeSelectionModel ID="TreeSelectionModel3" runat="server" Mode="Single">
</ext:TreeSelectionModel>
</SelectionModel>
</ext:TreePanel>
注意黄色的的事件,那才是此次重点。
treeLoad事件:
function treeLoad(item, node, records, successful, options) {
loadData();
}
getOrgid(node);
}
loadData事件主要是给TreePanel赋初始值:
var root = App.OptionOrgTree.getRootNode();
if (a[i].Key == "OrgID" && a[i].Value != null) {
getChildNodesNuchecked(root);
App.ddfOrgNameId.setValue(a[i].Value, result.OrgName, true);
遍历树形节点,并且不选中
function getChildNodesNuchecked(root) {
for (var p = 0; p < root.childNodes.length; p++) {
var item = root.childNodes[p]; item.set("checked", false);
getChildNodesNuchecked(item);
}
}
然后看看我们最重要最关键的方法getOrgid(node);
首页第三级等更下级的机构选择
function getOrgid(node) {
var result = parent.getSearchConfig();
var a = Ext.decode(result.ProcParams);
if (a.length > 0) {
for (var i = 0; i < a.length; i++) {
if (a[i].Key == "OrgID" && a[i].Value != null) {
var orgIds = a[i].Value.split(',');
for (var j = 0; j < orgIds.length; j++) {
for (var p = 0; p < node.childNodes.length; p++) {
var item = node.childNodes[p];
if (item.data.id == orgIds[j])
item.set("checked", true);
}
}
}
}
}
}
其实不难看出,大家已经知道是并不是一开始的时候就去遍历树形节点去选中,而是展开树形节点的时候把当前节点传入。其实大家可以试着一加载节点的时候就去选中。因为我初学EXT.NET反复试了几次,它只能读取到已经展开或者展开过的节点,我不知道初始怎么让它全部展开然后又收缩,所以就用了这种比较逗比的方法。如果有时间我就研究研究如何一开始全部展开然后又收缩,到时候在更新这个文章。
- EXT.NET循环并且选中TreePanel的某些值
- ext.net treepanel删除选中节点
- Ext TreePanel的使用
- [Ext.Net]TreePanel自定义图标
- [Ext.Net]TreePanel+gridPanel实例
- Ext.net TreePanel的Checkbox操作及父子联动
- EXT.NET 结合Linq 做的TreePanel树
- EXT.NET 前台获取TreePanel 中已选的节点
- [Ext.Net 1.X]TreePanel的各项属性
- ext.net treepanel 与 gridpanel 所获得的数据格式不一样
- Ext.net获取选中行的列值
- asp.net ext treepanel 动态加载XML
- Ext.Net TreePanel 修改Icon图标
- [Ext.Net]TreePanel 异步加载数据
- Ext.Net中TreePanel右键菜单
- EXT.NET TreePanel 相关属性、方法
- Ext.net中TreePanel动态生成
- Ext.TreePanel
- java 校验和
- API21开始getRunningAppProcesses只返回应用本身的进程信息
- oracle数据字典
- [综合面试] 牛人整理分享的面试知识:操作系统、计算机网络、设计模式、Linux编程,数据结构总结
- Jenkins系列之—16 Maven获取Jenkins的Subversion的版本号
- EXT.NET循环并且选中TreePanel的某些值
- ABAP操作符:CA CO CS CP
- 用OpenCV实现Otsu算法
- qrcode_deformed.hdev各种透视扭曲qr码还能读取的鲁邦性测试 相关例程学习
- 下一个较大值 栈和队列(优化防止TLE)
- 【API变更纪录】WRITE_SETTINGS权限 在API23只能由系统签名app使用
- [综合面试] 面试70问 经典回答
- 安装PHP扩展
- Java随机生成6位数字