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 实现单选与多选!相关推荐
- Android CheckedTextView 实现单选与多选
以下demo 地址 单选与双选实现的效果如下 CheckedTextView 继承的是 TextView 实现 Checkable 具有TextView 的属性 一般使用结合ListView xml ...
- 改变单选或者复选框的样式
原理是通过定位把以前的样式覆盖掉,就酱... 代码如下: css.checkbox{position: relative;padding-left: 8px;}.checkbox:before{con ...
- php一些单选、复选框的默认选择方法(示例)
转载 http://www.php.cn/php-weizijiaocheng-360029.html 一. radio和checkbox及php select默认选择的实现代码 1.radio单选框 ...
- vue单选,多选,多选的内容显示在页面可删除
vue做单选只能选一个 <template><div class="list"><!-- 多行多列单选 --><span>只能选一个 ...
- php input多选,利用css3更改input单选和多选样式的方法
在项目开发中我们经常会遇到需要更改input单选和多选样式的情况,今天就给大家介绍一种简单改变input单选和多选样式的办法. 在这之前先简单介绍一下:before伪类 :before 选择器向选定的 ...
- android单选对话框代码,Android实现单选与多选对话框的代码
android开发中实现单选与多选对话框的代码非常简单,具体代码如下所示: public void myClick(View view) { // 单选对话框 //singleCheckDialog( ...
- list多选 android,Android ExpandableListView单选以及多选实现代码
一.概述 ExpandableListView是常用的一个控件,今天自己做了个小练习,主要需求是单选以及多选的实现,看似比较简单,但是还是比较复杂,把代码贴给大家,有这种需求的可以参考一下. 二.效果 ...
- iOS-按钮单选与多选逻辑处理
概述 循环创建按钮, 进行按钮单选或者多选的操作. 详细 代码下载:http://www.demodashi.com/demo/10712.html 我们经常会有多行多列按钮的页面, 这个时候我们通常 ...
- 代码分析-DataGrid实现自增列、单选、多选
上一次,我们为这个DataGrid实现了添加.删除.修改.分页.动态修改内容等功能,今天再来分析一下如何为之添加自增列.单选.多选的功能. 首先看一下需要在上次的基础上增加的代码: (1)实现自增列 ...
最新文章
- python和c++哪个好找工作-升学为主的编程学python和C++哪个好?
- CHIL-SQL-PRIMARY KEY 约束
- Python-DDT框架
- 一句命令行检查cpu个数
- 【Java】日期字符串转换java.sql.Date对象
- k8s创建Deployment报错:no matches for kind “Deployment“ in version “extensions/v1beta1“
- 得推B2B2C商城源码v4.1
- Zookeeper(三)——选举机制
- 快速软件开发 学习笔记 之六
- 前端实习日记——高新兴科技集团
- [sql]join的5种方式:inner join、left(outer) join、right (outer) Join、full(outer) join、cross join...
- C# webclient UploadStringAsync如何得到变量?
- 【C语言】浅谈C语言数组%c%s打印逻辑及数组打印单个汉字
- QListView自定义Item
- 正则表达式常用的校验方法
- 网站提示HTTP503Service Unavailable的处理办法
- Task 3: Subword Models
- latex表格中如何画虚线
- idea html设置字体大小,intellij idea设置(字体大小、背景)
- APIAuto——敏捷开发最强大易用的 HTTP 接口工具 (二)