ext.net动态绑定树TreePanel
采用的是ext.net+mvc
先看效果图的吧,
前台代码
<ext:TreePanel ID="tpPost" runat="server" Title="岗位列表" AutoHeight="true" Border="false"> <Loader> <ext:TreeLoader DataUrl="/Broadcast/GetStorePost" /> </Loader> <Root> <ext:AsyncTreeNode NodeID="0" Text="车站岗位" /> </Root> <%-- <Listeners> <CheckChange Handler="node.getUI()[checked ? 'addClass' : 'removeClass']('complete')" /> </Listeners>--%> </ext:TreePanel>
注释掉的那块是给选中的某个节点加样式的,我这边不需要就注释掉了
DataUrl指向mvc Controllers的方法地址,
Root代表这棵树的根节点,我这里写死了
后台 Controllers中的方法
#region 搜索岗位信息数据 /// <summary> /// 搜索岗位信息数据 /// </summary> /// <param name="limit">分页数量</param> /// <param name="start">开始位置</param> /// <param name="dir">目录</param> /// <param name="sort">分类</param> /// <param name="searchValues">搜索条件字符串</param> /// <returns></returns> public ContentResult GetStorePost() { IList<Role> list = null; TreeNodeCollection treeNode = new TreeNodeCollection(false); try { //获取岗位数据 list = UserInfoBLL.GetUserRole(); foreach (Role post in list) { string postName = post.RoleName; string postId = post.RoleID.ToString(); Ext.Net.TreeNode tnBase = new Ext.Net.TreeNode(); tnBase.NodeID = postId; tnBase.Text = postName; //判断专题岗位是否勾选 if (isChoosePost(postName, "Post")) { tnBase.Checked = ThreeStateBool.True; } else { tnBase.Checked = ThreeStateBool.False; } tnBase.Leaf = true; treeNode.Add(tnBase); } } catch (Exception) { throw; } return Content(treeNode.ToJson()); } #endregion
这里要说的是 tnBase.Checked = ThreeStateBool.False;
不管你的业务中是否需要增加默认勾选的需求,都需要增加这个属性。不然这颗树的节点前面会没有勾选框的。