rad控件还是很不错的,功能强大的一腿。
下面介绍下treeview控件,大家可以先到www.telrik.com上面看看,很多控件。
1.引用dll
2.拷贝radcontrols/treeview的图片样式等到你自己的web根目录下
3.前台页面
- // 点击树控件后触发Js的脚本
- function AfterClick(node)
- {
- alert(node.Value + "|" + node.Text);
- }
- <div>
- <radt:radtreeview id="treeDept" Runat="server" ExpandDelay="0" OnNodeExpand="treeDept_NodeExpand"
- RetainScrollPosition="False" Height="420px" AfterClientClick="AfterClick"> </radt:radtreeview> </div>
4.后台页面
- /// <summary>
- /// 页面初始化
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void Page_Load(object sender, System.EventArgs e)
- {
- // 在此处放置用户代码以初始化页面
- if (!Page.IsPostBack && !treeDept.IsCallBack)
- {
- // 加载根节点
- LoadRootNodes();
- Session["treeViewState"] = treeDept.GetXml();
- // 加载信息
- treeDept.LoadingMessagePosition = LoadingMessagePosition.BeforeNodeText;
- treeDept.LoadingMessageCssClass = "LoadingMessageBlue";
- treeDept.LoadingMessage = "(loading ..)";
- }
- }
- /// <summary>
- /// 加载根节点
- /// </summary>
- private void LoadRootNodes()
- {
- //string isValid = "1";
- // 获取第一层部门数据
- DataTable dt = GetOneDept();
- // 遍历第一层节点并依次添加
- foreach (DataRow row in dt.Rows)
- {
- RadTreeNode node = new RadTreeNode();
- node.Text = row["DeptName"].ToString();
- node.Value = row["DeptNo"].ToString();
- //node.Category = "Some Category";
- node.ExpandMode = ExpandMode.ServerSideCallBack;
- node.ToolTip = "["+ node.Value + "]" + node.Text;
- // 增加节点
- treeDept.Nodes.Add(node);
- }
- }
- /// <summary>
- /// 异步填充节点数据
- /// </summary>
- /// <param name="o">事件源</param>
- /// <param name="e">参数信息</param>
- protected void treeDept_NodeExpand(object o, RadTreeNodeEventArgs e)
- {
- // 异步添加子节点
- AddChildNodes(e.NodeClicked);
- // 将子节点存入session中
- string treeViewState = (string)Session["treeViewState"];
- RadTreeView cachedTreeView = new RadTreeView();
- cachedTreeView.LoadXmlString(treeViewState);
- RadTreeNode cachedNodeClicked = cachedTreeView.FindNodeByValue(e.NodeClicked.Value);
- // cachedNodeClicked.Checked = e.NodeClicked.Checked;
- AddChildNodes(cachedNodeClicked);
- cachedNodeClicked.ExpandMode = ExpandMode.ClientSide;
- cachedNodeClicked.Expanded = true;
- Session["treeViewState"] = cachedTreeView.GetXml();
- }
- /// <summary>
- /// 异步添加子节点
- /// </summary>
- /// <param name="node">RadTreeNode</param>
- private void AddChildNodes(RadTreeNode node)
- {
- //DataSet ds = new DataSet();
- DataTable dt = new DataTable();
- // 获取第一层部门下的部门
- dt = this.GetOtherDept(node.Value);
- // 遍历DataTable,加载子节点
- foreach (DataRow row in dt.Rows)
- {
- RadTreeNode childNode = new RadTreeNode();
- childNode.Text = row["DeptName"].ToString();
- childNode.Value = row["DeptNo"].ToString();
- // 判断第二层是否有子节点
- if (node.Level ==0 && GetTreeDept(childNode.Value).Rows.Count > 0)
- {
- childNode.ExpandMode = ExpandMode.ServerSideCallBack;
- }
- // ToolTip显示
- childNode.ToolTip = "["+ childNode.Value + "]" + childNode.Text;
- node.Nodes.Add(childNode);
- }
- }
这样就Ok了。
可以根据自己的喜好设置样式,大家自己研究吧。