1. 程式人生 > >從資料庫讀取資料動態生成樹形選單示例

從資料庫讀取資料動態生成樹形選單示例

用C#從資料庫讀取資料,動態生成樹形選單例子

資料庫表

前臺程式碼

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

<!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 id="Head1" runat="server">
<title>樹形</title>
<style type="text/css">
 body{background:#ecefff}
.navPoint{COLOR:#666;CURSOR:hand;FONT-FAMILY:Webdings; FONT-SIZE:9pt}
.NiuNiutree{width:232px; height:525px; overflow:auto;}
</style>
</head>
<body>
  <form id="form1" runat="server">
   <div>
    <asp:TreeView ID="tree" runat="server" CssClass="NiuNiutree">
                </asp:TreeView> 
   </div>
 </form>
</body>
</html>

後臺程式碼

using System;
using System.Data;
using System.Data.SqlClient;
using System.Data.Odbc;
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.OracleClient;

public partial class demo : System.Web.UI.Page
{
    private SQLHelper sqlHelper;
    protected void Page_Load(object sender, EventArgs e)
    {
        sqlHelper = new SQLHelper();
        if (!Page.IsPostBack)
        {
           
            tree.ShowLines = true;
            tree.ShowExpandCollapse = true;
            TreeNodeCollection tnc = new TreeNodeCollection();
            tnc = tree.Nodes;
            //開始呼叫tncXunHuan,資料庫中fuid=9999為根節點
            tncXunHuan(tnc, 9999);
        }

    }
    //樹形選單
    public void tncXunHuan(TreeNodeCollection tnc, int fuid)
    {

        try
        {
            DataSet ds = new DataSet();
            string sql = "select id,fuid,the from sys_organ where fuid='" + fuid + "'";
            ds = sqlHelper.getDataSet(sql);
            // ----------------end------------資料庫獲取資料
            //------------------start-----------根據資料結構向treeView新增節點
            foreach (DataRow dr in ds.Tables[0].Rows)
            {
                int id = Convert.ToInt16(dr["id"]);
                int Fuid = Convert.ToInt16(dr["fuid"]);
                string the = dr["the"].ToString();
                TreeNode tn = new TreeNode();
                tn.Text = the;
                tn.NavigateUrl = "javascript:getBoundary('" + the + "')";//呼叫前臺js方法
                tn.ImageUrl = "images/file.png";//預設圖示為file.png                   
                tnc.Add(tn);
                int tncInt = ds.Tables[0].Rows.IndexOf(dr);
                tncXunHuan(tnc[tncInt].ChildNodes, id); //----------遞迴呼叫
                // tnc = tnc;
            }
            //------------------end-----------根據資料結構向treeView新增節點
            //------------------start---------設定包含子節點的父節點的圖示
            if (ds.Tables[0].Rows.Count > 0)
            {
                tnc[0].Parent.ImageUrl = "images/openfoldericon.png";//設定父檔案圖示

            }
            else
            {

                tnc[0].Parent.ImageUrl = "images/file.png";
            }


        }
        catch (Exception e) { return; }
    }
    
}

資料庫操作檔案 sqlHelper

using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.OracleClient;

/// <summary>
///Class1 的摘要說明
/// </summary>
public class SQLHelper
{
    public SQLHelper()
	{
		//
		//TODO: 在此處新增建構函式邏輯
		//
	}
    private static string GetConnectionString()
    {
        return "Data Source=wgyx;user=wgyx;password=wgyx;";
    }
    /// <summary>
    /// 返回查詢的資料集
    /// </summary>
    /// <param name="sql"></param>
    /// <returns></returns>
    public DataSet getDataSet(String sql)
    {
        DataSet ds = new DataSet();
        OracleConnection oraConn = null;
        try
        {
            oraConn = new OracleConnection(GetConnectionString());
            oraConn.Open();
            OracleDataAdapter oraDa = new OracleDataAdapter(sql, oraConn);
            oraDa.Fill(ds);
        }
        catch
        {
            return null;
        }
        finally
        {
            oraConn.Close();
        }
        return ds;
    }
    /// <summary>
    /// OracleDataReader
    /// </summary>
    /// <param name="sql"></param>
    /// <returns></returns>
    public OracleDataReader getDataReader(String sql)
    {

        OracleDataReader oraDr;
        OracleConnection oraConn = null;
         OracleCommand oraCmd=null;
        try
        {
            oraConn = new OracleConnection(GetConnectionString());
            oraConn.Open();
            oraCmd= new OracleCommand(sql, oraConn);
            oraDr = oraCmd.ExecuteReader();


        }
        catch
        {
            return null;
        }
        finally
        {
            
            oraConn.Close();
            
        }
        return oraDr;
    }
    
}

效果圖