树型控件节点的问题

lht0530 2003-06-12 11:28:48
我想客户端控制Treeview的一个checkBox节点选中或取消时其下的所有子节点都选中或取消。服务器端控件,就是老刷,肯定不行了。能否将详细点
...全文
41 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
lht0530 2003-06-12
  • 打赏
  • 举报
回复
谢了,先给江雨.net大哥给帐 。我研究研究
goody9807 2003-06-12
  • 打赏
  • 举报
回复
up
hgknight 2003-06-12
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/topic/1631/1631954.xml?temp=7.778567E-02
http://expert.csdn.net/Expert/topic/1645/1645231.xml?temp=.9744532
http://expert.csdn.net/Expert/topic/1654/1654834.xml?temp=.8108179
lht0530 2003-06-12
  • 打赏
  • 举报
回复
补充的树的多层的,最好用递归实现。谢了。
lht0530 2003-06-12
  • 打赏
  • 举报
回复
<%@ Register TagPrefix="iewc" Namespace="Microsoft.Web.UI.WebControls" Assembly="Microsoft.Web.UI.WebControls, Version=1.0.2.226, Culture=neutral, PublicKeyToken=31bf3856ad364e35" %>
<%@ Page language="c#" Codebehind="Setmenu.aspx.cs" AutoEventWireup="false" Inherits="customize.SMenu" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>菜单设置</title>
<meta content="Microsoft Visual Studio 7.0" 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="../../image/model.css" type="text/css" rel="stylesheet">
<script language="javascript">
function Ex(tree)
{
var i;
var index;
index=tree.clickedNodeIndex;
if(index.indexOf(".") == -1)
{
ChildNode=tree.getChildren();
for(i=0;i<ChildNode.length;i++)
{
var cNode;
cNode=ChildNode[i];
cNode.setAttribute("Expanded","False");
}

}
if(tree.getTreeNode(index).getAttribute("Expanded") == false)
{
tree.getTreeNode(index).setAttribute("Expanded","True");
}
else
{
tree.getTreeNode(index).setAttribute("Expanded","False");
}
}


function initchecknode()
{
var node=Menu.getTreeNode("1");
node.setAttribute("Checked","true");
setcheck(node,"true");
}

function tree_oncheck(tree)
{
var node=tree.getTreeNode(tree.clickedNodeIndex);
var Pchecked=tree.getTreeNode(tree.clickedNodeIndex).getAttribute("checked");
setcheck(node,Pchecked);
}

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);
}
}
}

</script>
</HEAD>
<body MS_POSITIONING="GridLayout" onload="initchecknode()">
<form id="Setmenu" action="Setmenu.asp.cs" method="post" runat="server">
<TABLE id="Table1" height="100%" cellSpacing="0" cellPadding="0" width="100%" border="0">
<TR>
<TD style="HEIGHT: 16px" bgColor="#000080"><FONT face="宋体"><B><FONT color="#ffffff" size="4">菜单设置</FONT></B></FONT></TD>
</TR>
<TR>
<TD style="HEIGHT: 18px"><FONT face="宋体"></FONT></TD>
</TR>
<TR>
<TD vAlign="top" rowSpan="3"><FONT face="宋体">
<TABLE height="100%" cellSpacing="1" cellPadding="1" width="100%" border="0">
<TR>
<TD vAlign="top">
<asp:Label id="Lbljob" runat="server" CssClass="label"></asp:Label>
<br>
<iewc:treeview id="Menu" runat="server" SelectExpands="True" ></iewc:treeview><BR>
<asp:button id="Btnset" runat="server" Text="设置"></asp:button></TD>
</TR>
</TABLE>
</FONT>
</TD>
</TR>
</TABLE>
</form>
</body>
</HTML>

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.Data.SqlClient;

namespace customize
{
/// <summary>
/// Setmenu 的摘要说明。
/// </summary>
public class SMenu : System.Web.UI.Page
{
public ShengChang.sysset sys=new ShengChang.sysset();
protected Microsoft.Web.UI.WebControls.TreeView Menu;

DataSet dspage=new DataSet();
DataSet dsjobmenu=new DataSet();
protected System.Web.UI.WebControls.Button Btnset;
int i=0;
protected System.Web.UI.WebControls.Label Lbljob;
int job_id=0;

private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if(!Page.IsPostBack)
{
dspage=sys.getpagemenu();
ViewState["dspage"]=dspage;
// int job_id=Convert.ToInt16(Request.Form["actor"]);
// string job_name=Convert.ToInt16(Request.Form["actorname"]);
job_id=1;
string job_name="产品经理";
job_name="请选择" + job_name + "可使用的菜单";

Lbljob.Text=job_name;
dsjobmenu=sys.getjobmenu(job_id);
Menu.Attributes.Add("onclick","Ex(this)");
Menu.Attributes.Add("oncheck","tree_oncheck(this)");

InitTree(Menu.Nodes,"0");

}

}
private void InitTree(TreeNodeCollection Nds,string father_id)
{
DataView dv=new DataView();
TreeNode tmpNd;
string intId;
dv.Table=dspage.Tables["page_menu"];
dv.RowFilter="father_id=" + father_id + "" ;
foreach(DataRowView drv in dv)
{
tmpNd=new TreeNode();
string id=drv["page_menu_id"].ToString();
tmpNd.ID=id;
tmpNd.Text=drv["page_menu_name"].ToString();
tmpNd.Target="main";
tmpNd.CheckBox=true;
tmpNd.NodeData=drv["father_id"].ToString();
DataView dvsub=new DataView();
dvsub.Table=dsjobmenu.Tables["job_menu"];
dvsub.RowFilter="page_menu_id=" + id + "";
if (dvsub.Count!=0)
{
tmpNd.Checked=true;
}
Nds.Add(tmpNd);
intId=drv["father_id"].ToString();
i++;
InitTree(tmpNd.Nodes,tmpNd.ID);
}
}


#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。
//加入非法登录用户验证

// if (Session["emp_name"]==null || Session["emp_name"].ToString()=="")
// {
// string strScrip = "<script language='javascript'>" +
// "alert('请正确登录本公司内部管理网络!!!');" +
// "</script>";
// Page.Response.Write (strScrip);
// Response.Write("<script language='JavaScript'>window.opener=null;window.close();</script>");
// }
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.Btnset.Click += new System.EventHandler(this.Btnset_Click);
this.ID = "SMenu";
this.Load += new System.EventHandler(this.Page_Load);

}
#endregion


private void maketree(TreeNodeCollection Nds,int serial)
{
int i=0;
foreach(TreeNode tmpNd in Nds)
{
int selected=0;
int id=Convert.ToInt16(tmpNd.ID);
bool flag=tmpNd.Checked;
if (flag)
{
selected=1;
sys.updatemenu(id,serial,selected);
int father_id=Convert.ToInt16(tmpNd.NodeData);

while(father_id!=0)
{

sys.updatemenu(father_id,serial,1);
DataView dv=new DataView();
dspage=(DataSet) ViewState["dspage"];
dv.Table=dspage.Tables["page_menu"];
dv.RowFilter="page_menu_id=" + father_id + "" ;
father_id=Convert.ToInt16(dv[0]["father_id"]);
}
}

sys.updatemenu(id,serial,selected);
i++;
maketree(tmpNd.Nodes,serial);
}
}

private void Btnset_Click(object sender, System.EventArgs e)
{
// int job_id=Convert.ToInt16(Request.Form["actor"]);
job_id=1;
maketree(Menu.Nodes,job_id);
Response.Redirect("Setmenu.aspx");

}
}
}

62,072

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧