日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

asp 使用TreeView控件

發布時間:2025/3/15 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 asp 使用TreeView控件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這段代碼為了使用?TreeNodeCheckChanged 事件,會有回刷新的效果;

不喜歡的可查看改進版,利用js控制選擇操作,無界面刷新,?“http://www.cnblogs.com/GoCircle/p/6231985.html”;

?

?

前臺代碼

<style>.tn td {height: 18px;display: flex;}.tn tr {display: flex;}.tn a {line-height: 18px;}</style><script type="text/javascript">function postBackByObject() {var o = window.event.srcElement;if (o.type === "checkbox") {//第一個參數寫up_action的ID,否則就是整個頁面刷了 __doPostBack("up_action", "");}}</script><asp:UpdatePanel ID="up_action" runat="server"><ContentTemplate><asp:TreeView ID="tv_roleaction" runat="server" ShowCheckBoxes="All" CssClass="tn" OnTreeNodeCheckChanged="tv_roleaction_TreeNodeCheckChanged" ShowLines="True" CollapseImageToolTip="折疊"></asp:TreeView></ContentTemplate></asp:UpdatePanel>

?

后臺

注:由于頁面加載問題,請在關閉或保存頁面信息后重新new一下兩個私有變量

private static SysRoleEntity role = new SysRoleEntity();private static List<object> roleaction = new List<object>();protected void Page_Load(object sender, EventArgs e){if (!IsPostBack){//調用遞歸函數,完成樹形結構的生成AddTree(0, (TreeNode)null);tv_roleaction.Attributes.Add("onclick", "postBackByObject()");}}//遞歸添加樹的節點public void AddTree(int ParentID, TreeNode pNode){DataView dvTree = new DataView(SysActionBLL.GetInstance().GetList(""));//過濾ParentID,得到當前的所有子節點dvTree.RowFilter = "[FPARENTACTIONID] = " + ParentID;foreach (DataRowView Row in dvTree){TreeNode Node = new TreeNode();Node.Value = Row["FACTIONID"].ToString();Node.Expanded = true;if (pNode == null){ //添加根節點Node.Text = "<font style='color:gray'>" + Row["FACTIONNAME"].ToString() + "</font>";tv_roleaction.Nodes.Add(Node);}else{ //?添加當前節點的子節點Node.Text = "<font style='color:gray'>" + Row["FACTIONNAME"].ToString() + "</font>";pNode.ChildNodes.Add(Node);}//判斷當前角色是否擁有該權限if (roleaction.Count > 0 && roleaction.Find(p => p.ToString() == Row["FACTIONID"].ToString()) != null){Node.Checked = true;Node.Text = Regex.Replace(Node.Text, @"gray", @"green");}AddTree(Int32.Parse(Row["FACTIONID"].ToString()), Node); //再次遞歸 }}/// <summary>/// 節點的選中事件/// </summary>/// <param name="sender"></param>/// <param name="e"></param>protected void tv_roleaction_TreeNodeCheckChanged(object sender, TreeNodeEventArgs e){//設置該節點的屬性 變量roleaction的修改if (e.Node.Checked){roleaction.Add(e.Node.Value);e.Node.Text = Regex.Replace(e.Node.Text, @"gray", @"green");}else{roleaction.Remove(e.Node.Value);e.Node.Text = Regex.Replace(e.Node.Text, @"green", @"gray");}SetChildChecked(e.Node);SetParentChecked(e.Node);}//設置該結點的子節點private void SetChildChecked(TreeNode parentNode){foreach (TreeNode node in parentNode.ChildNodes){//子節點是否選并改變顏色node.Checked = parentNode.Checked;if (node.Checked){roleaction.Add(node.Value);node.Text = Regex.Replace(node.Text, @"gray", @"green");}else{roleaction.Remove(node.Value);node.Text = Regex.Replace(node.Text, @"green", @"gray");}if (node.ChildNodes.Count > 0){SetChildChecked(node);}}}//設置該結點的父節點private void SetParentChecked(TreeNode childNode){if (childNode.Parent != null){var ifnochecked = true;//檢查父節點下是否有選中的節點foreach (TreeNode node in childNode.Parent.ChildNodes){if (node.Checked){if (roleaction.Where(p => p.ToString().Equals(childNode.Parent.Value)).Count() == 0){roleaction.Add(childNode.Parent.Value);}ifnochecked = false;childNode.Parent.Checked = true;childNode.Parent.Text = Regex.Replace(childNode.Parent.Text, @"gray", @"green");break;}}if (ifnochecked){roleaction.Remove(childNode.Parent.Value);childNode.Parent.Checked = false;childNode.Parent.Text = Regex.Replace(childNode.Parent.Text, @"green", @"gray");}SetParentChecked(childNode.Parent);}}

?

轉載于:https://www.cnblogs.com/GoCircle/p/6203095.html

總結

以上是生活随笔為你收集整理的asp 使用TreeView控件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。