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

解决方案 »

  1.   

    谢了,先给江雨.net大哥给帐 。我研究研究
      

  2.   

    <%@ 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"); }
    }
    }