现在的位置: 首页 > 综合 > 正文

.net之旅-树型结构及相关功能的实现(41)

2013年10月14日 ⁄ 综合 ⁄ 共 4866字 ⁄ 字号 评论关闭

 

树型结构一直是我们常用的结构。本文将详细具体的对其进行实现。

数据库是SQL server 2000。

webconfig的数据库配置内容:

  <appSettings>
    <add key="DatabaseConnStr" value="server=localhost;uid=sa;pwd=123456;database=infoFlat" />
  </appSettings>

其中的数据库设计:

sysFunction表:

   名称 类型 长度 说明

1 FunctionId int 4 0
0 FunctionName varchar 50 0
0 ParentFunctionId int 4 0

内容如下:

 1 系统功能 0
 2 信息中心 1
 3 新闻 2
 4 通知 2
 5 公告 2
 6 项目中心 1
 7 申报 6
 8 审批 6
 9 过程 6
 10 结题 6
 11 产品中心 1
 12 在研产品 11
   

具体代码:

1 file:///H:/infoFlat/InterFace/Left.aspx 树型结构页面

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Left.aspx.cs" Inherits="InterFace_Left" %>

<!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="formFuncList" runat="server">
         
<div>
            
<asp:Label ID="LabelUserId" runat="server" Text="Label"></asp:Label>
             
<br />
             
<asp:TreeView ID="TreeViewFuncList" runat="server" ShowLines="True">
             
</asp:TreeView>
         
</div>
    
</form>
</body>
</html>

 2 file:///H:/infoFlat/App_Code/Database/DbConn.cs 数据库连接

/// ************************************************************
/// Copyright (C), 2006-2007, GUET.
/// FileName: Index.aspx.cs
/// Author: longronglin
/// Version : 1.0
/// Date: 2007-01-23
/// Description:      
/// Function List:   
///     1. 
///     2. 
///     3.  
/// History:      
///      <author> <time> <version> <desc>
///      longronglin    2007/01/23     1.0      modify xxx . 
/// *************************************************************


using System;
using System.Data;
using System.Configuration;
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;


namespace infoFlat.App_Code.Database
{
    
/// <summary>
    
/// Summary description for DbConn
    
/// </summary>

    public class DbConn : IDisposable
    
{
        
// 数据库连接
        private static SqlConnection conn;

        
public DbConn()
        
{
            
//
        }


        
/// <summary>
        
/// 获取数据库连接并打开
        
/// </summary>

        public static SqlConnection GetConn()
        
{
            
// 获取数据库连接
            if (conn == null)
            
{
                
// DatabaseConnStr为web.config对应的appSettings设置
                conn = new SqlConnection(System.Configuration.ConfigurationManager.AppSettings["DatabaseConnStr"]);
            }


            
// 打开数据库连接
            if (conn.State == System.Data.ConnectionState.Closed)
            
{
                conn.Open();
            }
 

            
return conn;
        }



        
/// <summary>
        
/// 释放资源
        
/// </summary>

        public void Dispose()
        
{
            
// 确认连接是否已经关闭
            if (conn != null)
            
{
                conn.Dispose();
                conn 
= null;
            }

        }


    }


}

3 file:///H:/infoFlat/InterFace/Left.aspx.cs Left对应的代码:

/// ************************************************************
/// Copyright (C), 2006-2007, GUET.
/// FileName: Index.aspx.cs
/// Author: longronglin
/// Version : 1.0
/// Date: 2007-01-24
/// Description:      
/// Function List:   
///     1. void Page_Load()
///     2. 
///     3. 
/// History:      
///      <author> <time> <version> <desc>
///      longronglin    2007/01/24     1.0      modify xxx . 
/// *************************************************************


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;

using infoFlat.App_Code.Database;

public partial class InterFace_Left : System.Web.UI.Page
{
    
protected void Page_Load(object sender, EventArgs e)
    
{
        
// 获取Session中的用户ID
        String userId = Convert.ToString(Session["userId"]);

        LabelUserId.Text 
= userId;

        
// 初始化功能树
        InitFuncTree();
        AllOverTree(TreeViewFuncList.Nodes);
    }


    
private void InitFuncTree()
    

        
        SqlConnection conn 
= DbConn.GetConn();

        SqlDataAdapter adp 
= new SqlDataAdapter("select * from sysFunction", conn);
        DataSet ds 
= new DataSet();

        
try
        
{
            adp.Fill(ds);
        }

        
catch (Exception ex)
        
{
            ex.ToString();
        }

        
finally
        
{
                conn.Close();
        }


        
this.ViewState["ds"= ds;

        AddTree(
0, (TreeNode)null);
    }


    
//递归添加树的节点
    private void AddTree(int ParentFunctionId, TreeNode pNode)
    
{
        DataSet ds 
= (DataSet)this.ViewState["ds"];
        DataView dvTree 
= new DataView(ds.Tables[0]);

        
//过滤ParentFunctionId,得到当前的所有子节点
        dvTree.RowFilter = "[ParentFunctionId] = " 
【上篇】
【下篇】

抱歉!评论已关闭.