具体的代码如下
一个显示页面assignright.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="assignright.aspx.cs" Inherits="admin_assignright" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<%@ Register Assembly="Microsoft.ReportViewer.WebForms, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
Namespace="Microsoft.Reporting.WebForms" TagPrefix="rsweb" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="labelStatus" runat="server" Width="534px"></asp:Label> <br />
</div>
<asp:TreeView ID="TreeView2" runat="server" OnTreeNodePopulate="TreeView2_TreeNodePopulate" MaxDataBindDepth="2" ShowCheckBoxes="Leaf" OnSelectedNodeChanged="TreeView2_SelectedNodeChanged1">
<Nodes>
<asp:TreeNode PopulateOnDemand="True" Text="功能列表" Value="功能列表"></asp:TreeNode>
</Nodes>
</asp:TreeView>
<asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:powerMISConnectionString %>"
SelectCommand="SELECT [actionmoduleid], [modulename] FROM [actionmodule]"></asp:SqlDataSource>
<br />
</form>
</body>
</html>
一个代码隐藏页assignright.aspx.cs
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
public partial class admin_assignright : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void TreeView2_TreeNodePopulate(object sender, TreeNodeEventArgs e)
{
if (e.Node.ChildNodes.Count == 0)
{
switch (e.Node.Depth)
{
case 0:
Populateactionmodule(e.Node);
break;
case 1:
Populateactioncolumn(e.Node);
break;
}
}
}
void Populateactionmodule(TreeNode node)
{
SqlCommand sqlQuery = new SqlCommand(
"Select modulename, actionmoduleid From actionmodule");
DataSet resultSet;
resultSet = RunQuery(sqlQuery);
if (resultSet.Tables.Count > 0)
{
foreach (DataRow row in resultSet.Tables[0].Rows)
{
TreeNode NewNode = new
TreeNode(row["modulename"].ToString(),
row["actionmoduleid"].ToString());
NewNode.PopulateOnDemand = true;
NewNode.SelectAction = TreeNodeSelectAction.Expand;
node.ChildNodes.Add(NewNode);
}
}
}
void Populateactioncolumn(TreeNode node)
{
SqlCommand sqlQuery = new SqlCommand();
sqlQuery.CommandText = "Select actioncolumnname,actioncolumnid From actioncolumn " +
" Where actionmoduleid = @actionmoduleid";
sqlQuery.Parameters.Add("@actionmoduleid", SqlDbType.Int).Value =
node.Value;
DataSet ResultSet = RunQuery(sqlQuery);
if (ResultSet.Tables.Count > 0)
{
foreach (DataRow row in ResultSet.Tables[0].Rows)
{
TreeNode NewNode = new
TreeNode(row["actioncolumnname"].ToString(), row["actioncolumnid"].ToString());
NewNode.PopulateOnDemand = false;
NewNode.SelectAction = TreeNodeSelectAction.Select;
node.ChildNodes.Add(NewNode);
}
}
}
private DataSet RunQuery(SqlCommand sqlQuery)
{
string connectionString =
ConfigurationManager.ConnectionStrings
["powerMISConnectionString"].ConnectionString;
SqlConnection DBConnection =
new SqlConnection(connectionString);
SqlDataAdapter dbAdapter = new SqlDataAdapter();
dbAdapter.SelectCommand = sqlQuery;
sqlQuery.Connection = DBConnection;
DataSet resultsDataSet = new DataSet();
try
{
dbAdapter.Fill(resultsDataSet);
}
catch
{
labelStatus.Text = "出现错误,不能连接数据库!";
}
return resultsDataSet;
}
protected void SqlDataSource1_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
{
}
protected void TreeView2_SelectedNodeChanged1(object sender, EventArgs e)
{
TreeView trv = sender as TreeView;
TreeNode node = trv.SelectedNode;
string value = node.Value;
this.labelStatus.Text = value;
}
protected void CheckBoxList1_DataBinding(object sender, EventArgs e)
{
}
}
数据库中的两张表
actionmodule表