rad treeview异步加载树控件

rad控件还是很不错的,功能强大的一腿。

下面介绍下treeview控件,大家可以先到www.telrik.com上面看看,很多控件。

1.引用dll

2.拷贝radcontrols/treeview的图片样式等到你自己的web根目录下

3.前台页面

  1. // 点击树控件后触发Js的脚本
  2. function AfterClick(node)
  3.             {
  4.                 alert(node.Value + "|" + node.Text);
  5.                 }
  6. <div>
  7. <radt:radtreeview id="treeDept" Runat="server" ExpandDelay="0" OnNodeExpand="treeDept_NodeExpand"
  8. RetainScrollPosition="False" Height="420px" AfterClientClick="AfterClick"> </radt:radtreeview> </div> 

4.后台页面

  1. /// <summary>
  2.         /// 页面初始化
  3.         /// </summary>
  4.         /// <param name="sender"></param>
  5.         /// <param name="e"></param>
  6.         private void Page_Load(object sender, System.EventArgs e)
  7.         {
  8.             
  9.             // 在此处放置用户代码以初始化页面
  10.             if (!Page.IsPostBack && !treeDept.IsCallBack)
  11.             {
  12.                 // 加载根节点 
  13.                 LoadRootNodes();
  14.                 Session["treeViewState"] = treeDept.GetXml();
  15.                 // 加载信息
  16.                 treeDept.LoadingMessagePosition = LoadingMessagePosition.BeforeNodeText;
  17.                 treeDept.LoadingMessageCssClass = "LoadingMessageBlue";
  18.                 treeDept.LoadingMessage = "(loading ..)";
  19.                 
  20.             }
  21.         }
  22. /// <summary>
  23.         /// 加载根节点
  24.         /// </summary>
  25.         private void LoadRootNodes()
  26.         {
  27.             
  28.             //string isValid = "1";
  29.             // 获取第一层部门数据
  30.             DataTable dt = GetOneDept();
  31.             
  32.             // 遍历第一层节点并依次添加
  33.             foreach (DataRow row in dt.Rows)
  34.             {
  35.                 RadTreeNode node = new RadTreeNode();
  36.                 node.Text   = row["DeptName"].ToString();
  37.                 node.Value  = row["DeptNo"].ToString();
  38.                 //node.Category = "Some Category";
  39.                 node.ExpandMode = ExpandMode.ServerSideCallBack;
  40.                 node.ToolTip =  "["+ node.Value + "]" + node.Text;
  41.                 // 增加节点
  42.                 treeDept.Nodes.Add(node);
  43.             }
  44.         }
  45.         /// <summary>
  46.         /// 异步填充节点数据
  47.         /// </summary>
  48.         /// <param name="o">事件源</param>
  49.         /// <param name="e">参数信息</param>
  50.         protected void treeDept_NodeExpand(object o, RadTreeNodeEventArgs e)
  51.         {
  52.             
  53.             // 异步添加子节点
  54.             AddChildNodes(e.NodeClicked);
  55.             // 将子节点存入session中
  56.             string treeViewState = (string)Session["treeViewState"];
  57.             RadTreeView cachedTreeView = new RadTreeView();
  58.             cachedTreeView.LoadXmlString(treeViewState);
  59.             RadTreeNode cachedNodeClicked = cachedTreeView.FindNodeByValue(e.NodeClicked.Value);
  60.             // cachedNodeClicked.Checked = e.NodeClicked.Checked;
  61.             AddChildNodes(cachedNodeClicked);
  62.             cachedNodeClicked.ExpandMode = ExpandMode.ClientSide;
  63.             cachedNodeClicked.Expanded = true;
  64.             Session["treeViewState"] = cachedTreeView.GetXml();
  65.         }
  66.         /// <summary>
  67.         /// 异步添加子节点
  68.         /// </summary>
  69.         /// <param name="node">RadTreeNode</param>
  70.         private void AddChildNodes(RadTreeNode node)
  71.         {
  72.             //DataSet ds = new DataSet();
  73.             DataTable dt = new DataTable();
  74. // 获取第一层部门下的部门
  75.             dt = this.GetOtherDept(node.Value);
  76.             
  77.             // 遍历DataTable,加载子节点
  78.             foreach (DataRow row in dt.Rows)
  79.             {
  80.                 RadTreeNode childNode = new RadTreeNode();
  81.                 childNode.Text  = row["DeptName"].ToString();
  82.                 childNode.Value = row["DeptNo"].ToString();
  83.                 // 判断第二层是否有子节点
  84.                 if (node.Level ==0 && GetTreeDept(childNode.Value).Rows.Count > 0)
  85.                 {
  86.                     childNode.ExpandMode = ExpandMode.ServerSideCallBack;
  87.                 }
  88.                 // ToolTip显示
  89.                 childNode.ToolTip = "["+ childNode.Value + "]" + childNode.Text;
  90.                 
  91.                 node.Nodes.Add(childNode);
  92.             }
  93.         }

这样就Ok了。

可以根据自己的喜好设置样式,大家自己研究吧。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值