TreeView 实现单选与多选!
最近在做臨測項目,涉及到了,實現用戶的單選與多選,用戶中從域中域中讀取的.查找了一些資料,實現了此方法,大家一起分享一下.
UserTree.aspx
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
?<HEAD>
??<title>請選擇用戶</title>
??<meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
??<meta content="C#" name="CODE_LANGUAGE">
??<meta content="JavaScript" name="vs_defaultClientScript">
??<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
??<LINK href="../../appCssStyle/css.css" type="text/css" rel="stylesheet">
??<script language="javascript">
??<!--
??//設置所有節點選中狀態
??function SetItemExpand(oColl,status)
??{
???var oChild;
???for (var i=0;i<oColl.length;i++)
???{
????oChild = oColl[i];
????oChild.setAttribute("Checked",status);
????SetItemExpand(oChild.getChildren(),status); ??
???}
??}
??
??//獲得所有選中的節點
??function GetNode()
??{
???document.all.userid.value="";
???document.all.username.value="";
???GetCheckValue(document.all.TreeView1.getChildren());
???returnValue();
??}
??//返回值(單選)
??function returnValue()
??{
???//window.opener.document.all.tbReceiverID.value =document.all.userid.value;
???//window.opener.document.all.tbReciver.value=document.all.username.value;
?????
???var strname = document.all.username.value;
???//alert(strname);
???window.opener.document.all.tbReciver.value = strname.substring(0,strname.length-1);
???
???var strid = document.all.userid.value;
???//alert(strid);
???window.opener.document.all.tbReceiverID.value = strid.substring(0,strid.length-1);
???window.close();
??
??}
??
??//返回值(多選)
??function returnValue_2()
??{
???//window.opener.document.all.tbReceiverID.value =document.all.userid.value;
???//window.opener.document.all.tbReciver.value=document.all.username.value;
?
??}
??
??
??//獲得所有選中的節點
??function GetCheckValue(oColl)
??{
???var oChild;
???for (var i=0;i<oColl.length;i++)
???{
????oChild = oColl[i];
????
????if(oChild.getAttribute("checked"))
????{
?????if(oChild.getAttribute("ID")!=null && oChild.getAttribute("ID")!="")
?????{
??????document.all.userid.value+=StrTrim(oChild.getAttribute("ID")) + ",";
??????document.all.username.value+=StrTrim(oChild.getAttribute("Text")) + ",";
?????}
????}
????GetCheckValue(oChild.getChildren()); ?
???}
??}
??//去除兩邊的空格
??function StrTrim(str)
??{
???return str.replace(/(^\s*)|(\s*$)/g, "");
??}
??
??//當單選時,觸發此事件
??function ChangeAll(tnode)
??{
???SetItemExpand(document.all.TreeView1.getChildren(),false);
???var node=tnode.getTreeNode(tnode.clickedNodeIndex);
???node.setAttribute("Checked",true);
??}
??
??//當多選時觸發oncheck事件
??function tree_oncheck(tree)
??{
???var node=tree.getTreeNode(tree.clickedNodeIndex);
???var Pchecked=tree.getTreeNode(tree.clickedNodeIndex).getAttribute("checked");
???setcheck(node,Pchecked);
???//FindCheckedFromNode(TreeView1);
??}
??//設置子節點選中
??function setcheck(node,Pc)
??{
???var i;
???var ChildNode=new Array();
???ChildNode=node.getChildren();
???if(parseInt(ChildNode.length)==0)
????return;
???else
???{
????for(i=0;i<ChildNode.length;i++)
????{
?????var cNode;
?????cNode=ChildNode[i];
?????if(parseInt(cNode.getChildren().length)!=0)
?????setcheck(cNode,Pc);
?????cNode.setAttribute("Checked",Pc);
????}
???}
??}
??//獲取所有節點狀態
??function FindCheckedFromNode(node)
??{
???var i = 0;
???var nodes = new Array();
???nodes = node.getChildren();
???for (i = 0; i < nodes.length; i++)
???{
????var cNode;
????cNode=nodes[i];
????if (parseInt(cNode.getChildren().length) != 0 )
????{
?????FindCheckedFromNode(cNode);
????}
???}
??}
???
?
??-->
??</script>
?</HEAD>
?<body>
??<form id="Form1" method="post" runat="server">
???
???<table class="bg1" cellSpacing="0" borderColorDark="#ffffff" cellPadding="0" width="98%"
????align="center">
????<tr>
?????<td height="26">
??????<table cellSpacing="0" cellPadding="0" width="100%" border="0">
???????<tr>
????????<td width="1%"><IMG height="35" src="../../img/im_0007.gif" width="35"></td>
????????<td class="bg001" vAlign="middle" align="left"><font class="bt001">選擇用戶 </font>
????????</td>
???????</tr>
??????</table>
?????</td>
????</tr>
????<tr>
?????<td align="right">
??????<table cellSpacing="0" cellPadding="0" width="85%" border="0">
???????<tr>
????????<td><iewc:treeview id="TreeView1" runat="server">
??????????<iewc:TreeNode Text="Node0" Expanded="True">
???????????<iewc:TreeNode Text="Node1"></iewc:TreeNode>
??????????</iewc:TreeNode>
?????????</iewc:treeview></td>
???????</tr>
???????<tr>
????????<td vAlign="top" align="center"><INPUT class="cmd_but2" οnclick="GetNode()" type="button" value="確定"> <input class="cmd_but2" οnclick="window.close()" type="button" value="? 取消? " name="btnCancel">
?????????<INPUT id="userid" style="WIDTH: 89px; HEIGHT: 22px" type="hidden" name="userid" runat="server">
?????????<INPUT id="username" style="WIDTH: 81px; HEIGHT: 22px" type="hidden" name="username" runat="server"></td>
???????</tr>
??????</table>
??????<br>
?????</td>
????</tr>
???</table>
??</form>
?</body>
</HTML>
UserTree.aspx.cs
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using Microsoft.Web.UI.WebControls;
using System.Text;
namespace Archives.Common.SelectADUser
{
?/// <summary>
?/// UserTree 的摘要說明。
?/// </summary>
?public class UserTree : System.Web.UI.Page
?{
??protected Microsoft.Web.UI.WebControls.TreeView TreeView1;
??protected System.Web.UI.HtmlControls.HtmlInputHidden userid;
??protected System.Web.UI.HtmlControls.HtmlInputHidden username;
?
??THS.Tools.DataAccess da=new THS.Tools.DataAccess();
?
??private void Page_Load(object sender, System.EventArgs e)
??{
???if(!Page.IsPostBack)
???{
????InitTree();
???}
???//為多選時
???if(Request["Type"]!=null && Request["Type"].ToString()=="1")
???{
????TreeView1.Attributes.Add("oncheck","tree_oncheck(this)");
???}
???else //為單選時
???{
????TreeView1.Attributes.Add("oncheck","ChangeAll(this)");
???}
???
??}
??/// <summary>
??/// 初始化樹
??/// </summary>
??public void InitTree()
??{
???bool Status=false;
???//為1時為多選,
???if(Request["Type"]!=null && Request["Type"].ToString()=="1")
???{
????Status=true;
???}
???TreeView1.Nodes.Clear();
???//獲得部門
???string OUsql="SELECT * FROM V_ADUser ORDER BY OU";
???//部門數據
???DataTable Oudt=da.GetDataSet(OUsql,"aa").Tables["aa"];
???//用戶數據
???string temp="";
???foreach(DataRow dr in Oudt.Rows)
???{
????if(dr["ou"].ToString().Length>2 && dr["ou"].ToString().Substring(0,2).ToLower()!="cn")
????{
?????string str=dr["ou"].ToString();
?????if(temp!=str)
?????{
??????temp=str;
??????TreeNode tn=new TreeNode();
??????tn.Text=dr["ou"].ToString();
??????tn.ID=null;
??????tn.ImageUrl ="../../img/treeview/1_0/images/folder.gif";
??????tn.SelectedImageUrl="../../img/treeview/1_0/images/folderopen.gif";
??????tn.ExpandedImageUrl="../../img/treeview/1_0/images/folderopen.gif";
??????tn.CheckBox=Status;
??????FillNode(Oudt,tn,dr["ou"].ToString());
??????TreeView1.Nodes.Add(tn);
?????}
?????else
?????{
??????continue;
?????}
????}
???}
??}
??/// <summary>
??/// 填充子節點
??/// </summary>
??public void FillNode(DataTable dt, TreeNode tn,string ou)
??{
???foreach(DataRow dr in dt.Rows)
???{
????if(dr["ou"].ToString()==ou)
????{
?????TreeNode childNode=new TreeNode();
?????childNode.Text=dr["DisName"].ToString();
?????childNode.ID=dr["GUID"].ToString();
?????childNode.CheckBox=true;
?????childNode.ImageUrl="../../img/treeview/1_0/images/page.gif";
?????childNode.SelectedImageUrl="../../img/treeview/1_0/images/page.gif";;
?????tn.Nodes.Add(childNode);
????}
???}
??}
??#region Web 窗體設計器生成的代碼
??override protected void OnInit(EventArgs e)
??{
???//
???// CODEGEN: 該調用是 ASP.NET Web 窗體設計器所必需的。
???//
???InitializeComponent();
???base.OnInit(e);
??}
??
??/// <summary>
??/// 設計器支持所需的方法 - 不要使用代碼編輯器修改
??/// 此方法的內容。
??/// </summary>
??private void InitializeComponent()
??{???
???this.Load += new System.EventHandler(this.Page_Load);
??}
??#endregion
?}
}
轉載于:https://www.cnblogs.com/wangzhq/articles/465293.html
總結
以上是生活随笔為你收集整理的TreeView 实现单选与多选!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [转载]如何用关键字优化网站?
- 下一篇: 趣味教程:从女娲造人谈类、属性、方法及实