<%@ 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="AllotPopedom.aspx.cs" AutoEventWireup="false" Inherits="ERP.system.Access.AllotPopedom" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>AllotPopedom</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio 7.0">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
<LINK href="../../css/main.css" type="text/css" rel="stylesheet">
<script language="javascript">
<!--
function initchecknode()
{
//var node=TreeView1.getTreeNode("0");
//node.setAttribute("Checked","true");
//setcheck(node,"true");
document.AllotPopedom.aaaa.value="";
document.AllotPopedom.bbbb.value="";
}
function tree_oncheck(tree)
{
var node=tree.getTreeNode(tree.clickedNodeIndex);
var Pchecked=tree.getTreeNode(tree.clickedNodeIndex).getAttribute("checked");
setcheck(node,Pchecked);
document.AllotPopedom.aaaa.value="";
document.AllotPopedom.bbbb.value="";
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)
{
document.AllotPopedom.aaaa.value="";
document.AllotPopedom.bbbb.value="";
FindCheckedFromNode1(node);
alert(document.AllotPopedom.aaaa.value);
}
function FindCheckedFromNode1(node)
 {
// document.TreeViewResult.aaaa.value = "";
// document.TreeViewResult.bbbb.value = "";
var i = 0;
var nodes = new Array();
nodes = node.getChildren();

//alert('Now searching ' + ':   ' + node.getAttribute("Text"));
for (i = 0; i < nodes.length; i++) {
var cNode;
cNode=nodes[i];
if (cNode.getAttribute("Checked"))
AddChecked(cNode);
else
    AddUnChecked(cNode);

if (parseInt(cNode.getChildren().length) != 0 ) {
FindCheckedFromNode1(cNode);
}
}
//document.all.item(Message).Text = document.TreeViewResult.aaaa.value;
}//设置选定
function AddChecked(node) {
alert(node.getAttribute("Text") + ' is checked');
document.AllotPopedom.aaaa.value += node.getAttribute("NodeData");
document.AllotPopedom.aaaa.value += ',';
//document.AllotPopedom.bbbb.value += node.getAttribute("Text");
//document.AllotPopedom.bbbb.value += ',';
}///处理不选择的项
function AddUnChecked(node) {
//alert(node.getAttribute("Text") + ' is unchecked');
document.AllotPopedom.bbbb.value += node.getAttribute("NodeData");
document.AllotPopedom.bbbb.value += ',';
}
//-->////////////设置父节点下所有的子节点的Check值
function CheckChildren(parentNode,checked)
{
var i;
var len=parentNode.getChildren().length;
    var subNode=new Array();
    var s;
    subNode=parentNode.getChildren();

    if(parseInt(subNode.length)!=0)
    {
for(i=0;i<subNode.length;i++)
{
  var bCheckBox;
  bCheckBox=subNode[i].getAttribute("checkbox");
  if(bCheckBox!=null)
  {
subNode[i].setAttribute("checked",checked);
  }
}    }
}
////////////根据子节点设置ParentNode的Check值,如果父节点的所有子节点都为选中,则它为选中,否则为非选中
function CheckParentNode(node)
{
var i;
var parentNode=node.getParent();
if(parentNode!=null)
{
var len=parentNode.getChildren().length;
        var subNode=new Array();
        var s;
        subNode=parentNode.getChildren();        bChecked=false;
        if(parseInt(subNode.length)!=0)
        {
for(i=0;i<subNode.length;i++)
{
  var bCheckBox;
  var l_bChecked;
  bCheckBox=subNode[i].getAttribute("checkbox");
  if(bCheckBox!=null)
      {
    l_bChecked=subNode[i].getAttribute("checked");
    if(l_bChecked!=null &&l_bChecked==true)
    {
bChecked=true;
break;
    }
      }
     }
        }
       // alert(bChecked);
        parentNode.setAttribute("checked",bChecked);
}
} function checknode(tree)
{
var node;
node=tree.getTreeNode(tree.clickedNodeIndex);
CheckChildren(node,node.getAttribute("checked"));
CheckParentNode(node);
}

</script>
</HEAD>
<body MS_POSITIONING="GridLayout" topmargin="0" leftmargin="0" onload="initchecknode()">
<form id="AllotPopedom" method="post" runat="server">
<table class="over" height="100%" width="100%">
<tr>
<td vAlign="top">
<table align="center">
<tr>
<td><asp:Label id="Message" runat="server"></asp:Label></td>
</tr>
<tr>
<td><iewc:TreeView id="TreeView1" runat="server" SelectExpands="True" ExpandLevel="5"></iewc:TreeView></td>
</tr>
<tr>
<td align="center">
<asp:Button id="btnAllot" runat="server" Text="授权" CausesValidation="False"></asp:Button>
<asp:Button id="btnClose" runat="server" Text="关闭" CausesValidation="False"></asp:Button>
</td>
</tr>
</table>
<asp:Label id="Popedom" runat="server"></asp:Label>
<INPUT type="hidden" id="aaaa" name="aaaa" runat="server"> <INPUT type="hidden" id="bbbb" name="bbbb" runat="server">
<asp:Label id="PopedomName" runat="server"></asp:Label>
</td>
</tr>
</table>
</form>
</body>
</HTML>

解决方案 »

  1.   

    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 ERP.include;
    using ERP.system.Access.Business;
    using Microsoft.Web.UI.WebControls;namespace ERP.system.Access
    {
    /// <summary>
    /// AllotPopedom 的摘要说明。
    /// </summary>
    public class AllotPopedom : System.Web.UI.Page
    {
    protected System.Web.UI.WebControls.Label Message;
    protected Microsoft.Web.UI.WebControls.TreeView TreeView1;

    DataSet g_ds = new DataSet();
    protected System.Web.UI.WebControls.Button btnAllot;
    protected System.Web.UI.WebControls.Button btnClose;
    protected System.Web.UI.WebControls.Label Popedom;
    protected System.Web.UI.HtmlControls.HtmlInputHidden aaaa;
    protected System.Web.UI.HtmlControls.HtmlInputHidden bbbb;
    protected System.Web.UI.WebControls.Label PopedomName;
    CRole g_Role = new CRole(); private void Page_Load(object sender, System.EventArgs e)
    {
    // 在此处放置用户代码以初始化页面
    if (!this.IsPostBack)
    {
    string m_Role_ID = Request.QueryString["Role_ID"].ToString();
    ViewState["Role_ID"] = m_Role_ID;
    DataRow m_dr = g_Role.Retrive(m_Role_ID);
    Message.Style["Color"] = "red";
    Message.Text = "你要授权的角色是:" + m_dr["Role_Name"].ToString();
    ViewState["Role_Name"] = m_dr["Role_Name"].ToString();
    createTreeView();
    TreeView1.Attributes.Add("oncheck","checknode(this)");

    btnAllot.Attributes.Add("OnClick","FindCheckedFromNode(TreeView1)");
    }

    } #region Web Form Designer generated code
    override protected void OnInit(EventArgs e)
    {
    //
    // CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。
    //
    InitializeComponent();
    base.OnInit(e);
    }

    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {    
    this.btnAllot.Click += new System.EventHandler(this.btnAllot_Click);
    this.btnClose.Click += new System.EventHandler(this.btnClose_Click);
    this.Load += new System.EventHandler(this.Page_Load); }
    #endregion /// <summary>
    /// 绑定文件类型树 
    /// </summary>
    private void createTreeView()
    {
    try
    {
    CPopedom m_Popedom = new CPopedom();
    g_ds = m_Popedom.GetPopedoms();
    string m_Root_ID = "0";
    iniTree(TreeView1.Nodes,m_Root_ID);
    }
    catch(Exception ex)
    {
    throw new Exception(ex.ToString());
    }
    } /// <summary>
    /// 绑定下级树
    /// </summary>
    private void iniTree(Microsoft.Web.UI.WebControls.TreeNodeCollection Nds,string aParentID)
    {
    DataView m_dv = new DataView();
    string iniId = ""; try
    {
    string m_ParentID = aParentID;
    m_dv.Table = g_ds.Tables[0];
    m_dv.RowFilter = " Up_Popedom_ID = "+m_ParentID; 
    string m_Role_ID = ViewState["Role_ID"].ToString();
    foreach(DataRowView drv in m_dv)
    {
    TreeNode tmpNd = new TreeNode();
    iniId = drv["Popedom_ID"].ToString();
    tmpNd.ID = drv["Popedom_ID"].ToString();
    tmpNd.NodeData = drv["Popedom_ID"].ToString();
    tmpNd.CheckBox = true;


    if (g_Role.CheckIsExist(m_Role_ID,iniId) == true)
    {
    tmpNd.Checked = true;
    }
    else
    {
    tmpNd.Checked = false;
    }

    tmpNd.Text = drv["Popedom_Name"].ToString();
    Nds.Add(tmpNd);
    iniTree(Nds[Nds.Count - 1].Nodes,iniId);
    }
    }
    catch(Exception ex)
    {
    throw new Exception(ex.ToString());
    }
    } /// <summary>
    /// 关闭窗口
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void btnClose_Click(object sender, System.EventArgs e)
    {
    currencyLib.closeWindowNoFresh(this);
    } /// <summary>
    /// 分配权限
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void btnAllot_Click(object sender, System.EventArgs e)
    {
    try
    {
    string m_Role_ID = ViewState["Role_ID"].ToString();
    string m_Value = aaaa.Value;
    string tmp_value = m_Value.Substring(0,m_Value.Length -1);
    Popedom.Text = tmp_value + "<br>";
    Popedom.Text += m_Role_ID; CRole m_Role = new CRole(m_Role_ID);
    bool m_ClearRet = false;
    m_ClearRet = m_Role.ClearPopedoms();
    string m_Message = "给   " + ViewState["Role_Name"].ToString();
    if (m_ClearRet == true)
    {
    bool m_ret = false;
    m_ret = m_Role.AddPopedoms(m_Role_ID,tmp_value);
    if (m_ret == false)
    {
    m_Message += "   角色授权失败!";
    currencyLib.ShowMessage(this,"信息提示!",m_Message);
    }
    else
    {
    //TreeView1.Attributes.Add("oncheck","checknode(this)");
    //btnAllot.Attributes.Add("OnClick","FindCheckedFromNode(TreeView1)");
    m_Message += "   角色授权成功!";
    currencyLib.ShowMessage(this,"信息提示!",m_Message);
    TreeView1.Nodes.Clear();
    createTreeView();
    //string m_ParentPage = "Role.aspx";
    //currencyLib.ShowAndCloseWindow(this,"信息提示!",m_Message,m_ParentPage);
    }
    }
    else
    {
    m_Message = "清空原有权限失败!";
    currencyLib.ShowMessage(this,"信息提示!",m_Message);
    }
    }
    catch(Exception ex)
    {
    throw new Exception(ex.ToString());
    }
    /*
    string[] m_string = tmp_value.Split(',');
    for(int i=0;i<m_string.Length;i++)
    {
    Popedom.Text += m_string.GetValue(i).ToString() + "<br>";
    } string m_Value_Name = bbbb.Value;
    string tmp_value_Name = m_Value_Name.Substring(0,m_Value_Name.Length -1);
    string[] m_stringName = tmp_value_Name.Split(',');
    for(int i=0;i<m_stringName.Length;i++)
    {
    PopedomName.Text += m_stringName.GetValue(i).ToString() + "<br>";
    }
    */
    } }
    }有兴趣的朋友帮我看下,为什么权限只可以增加,而不能修改?
      

  2.   

    问题解决了,只要把AutoPostBack=true设置即可