使用C#從Access建立樹狀目錄

使用C#從Access建立樹狀目錄

Access Database download: db1.rar

CataTree

ProdMenu.aspx

    <asp:TreeView ID="TreeView1" runat="server" ExpandDepth="0"  
        ImageSet="XPFileExplorer" NodeIndent="15">
        <ParentNodeStyle Font-Bold="False" />
        <SelectedNodeStyle BackColor="#B5B5B5" Font-Underline="False"  
            HorizontalPadding="0px" VerticalPadding="0px" />
        <NodeStyle Font-Names="Tahoma" Font-Size="8pt" ForeColor="Black"  
            HorizontalPadding="2px" NodeSpacing="0px" VerticalPadding="2px" />
        <HoverNodeStyle Font-Underline="True" ForeColor="#6666AA" />
    </asp:TreeView>

ProdMenu.aspx.cs

 

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


public partial class ProdMenu : System.Web.UI.Page
{
    public string ParentCataid = null;
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            Load_Treeview();
        }

    }
  

    private void Load_Treeview()
    {
        TreeView1.Nodes.Clear();
        const string SQL_SELECT = "select * from cata order by cataid";
        DataSet myDataSet = DataAccess.DataSet(SQL_SELECT);
        this.ViewState["myDataSet"] = myDataSet;
        AddTree(0, (TreeNode)null);
    }
  

    private void AddTree(int ParentID, TreeNode pNode)
    {
        DataSet ds = (DataSet)this.ViewState["myDataSet"];
        DataView dvTree = new DataView(ds.Tables[0]);  

        dvTree.RowFilter = "[cata_parentid]   =   " + ParentID;
        foreach (DataRowView Row in dvTree)
        {
            TreeNode Node = new TreeNode();
            if (pNode == null)
            {
                Node.Text = Row["cata_name"].ToString();
                TreeView1.Nodes.Add(Node);
                Node.NavigateUrl = "ShowCata.aspx?cataid=" + Row["CATAID"].ToString();
                Node.Expanded = true;
                AddTree(Int32.Parse(Row["CATAID"].ToString()), Node);
            }

            else
            {
                Node.Text = Row["cata_name"].ToString();
                pNode.ChildNodes.Add(Node);
                Node.NavigateUrl = "ShowCataDetail.aspx?cataid=" + Row["CATAID"].ToString() + "&cata_no=" + Row["cata_no"].ToString();
                Node.Expanded = false;
                Node.Target = "_top";
                AddTree(Int32.Parse(Row["CATAID"].ToString()), Node);
            }

        }

    }
  

    Web 表單設計器生成的代碼
}

App_Code/db.cs

 

using System;
using System.Data;
using System.Data.OleDb;
using System.Configuration; 


namespace SysClassLibrary
{
    /// <summary>
    /// DataAccess 資料訪問類
    /// <description>資料處理基類,調用方式:DataAccess.DataSet((string)sqlstr);或者DataAccess.DataSet((string)sqlstr,ref DataSet ds); </description>
    /// </summary>

    public class DataAccess
    {
        屬性
        public DataAccess()
        {
            //init();
        }

        內部函數  靜態方法中不會執行DataAccess()構造函數   

        /// <summary>
        /// 執行Sql查詢語句
        /// </summary>
        /// <param name="sqlstr">傳入的Sql語句</param>

        public static void ExecuteSql(string sqlstr)
        {
            try
            {
                openConnection();
                comm.CommandType = CommandType.Text;
                comm.CommandText = sqlstr;
                comm.ExecuteNonQuery();
            }

            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }

            finally
            {
                closeConnection();
            }

        }
  

        /// <summary>
        /// 執行Sql查詢語句並返回第一行的第一條記錄,返回值為object 使用時需要拆箱操作 -> Unbox
        /// </summary>
        /// <param name="sqlstr">傳入的Sql語句</param>
        /// <returns>object 返回值 </returns>

        public static object ExecuteScalar(string sqlstr)
        {
            object obj = new object();
            try
            {
                openConnection();
                comm.CommandType = CommandType.Text;
                comm.CommandText = sqlstr;
                obj = comm.ExecuteScalar();
            }

            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }

            finally
            {
                closeConnection();
            }

            return obj;
        }
  

        /// <summary>
        /// 執行Sql查詢語句,同時進行事務處理
        /// </summary>
        /// <param name="sqlstr">傳入的Sql語句</param>

        public static void ExecuteSqlWithTransaction(string sqlstr)
        {
            closeConnection();
            openConnection();  

            OleDbTransaction trans;
            trans = conn.BeginTransaction();
            comm.Transaction = trans;
            try
            {
                openConnection();
                comm.CommandType = CommandType.Text;
                comm.CommandText = sqlstr;
                comm.ExecuteNonQuery();
                trans.Commit();
            }

            catch
            {
                trans.Rollback();
            }

            finally
            {
                closeConnection();
            }

        }
  

        /// <summary>
        /// 返回指定Sql語句的OleDbDataReader,請注意,在使用後請關閉本物件,同時將自動調用closeConnection()來關閉資料庫連接
        /// 方法關閉資料庫連接
        /// </summary>
        /// <param name="sqlstr">傳入的Sql語句</param>
        /// <returns>OleDbDataReader對象</returns>

        public static OleDbDataReader DataReader(string sqlstr)
        {
            OleDbDataReader dr = null;
            try
            {
                openConnection();
                comm.CommandText = sqlstr;
                comm.CommandType = CommandType.Text;
                dr = comm.ExecuteReader(CommandBehavior.CloseConnection);
            }

            catch
            {
                try
                {
                    dr.Close();
                    closeConnection();
                }

                catch
                {
                }

            }

            return dr;
        }
  

        /// <summary>
        /// 返回指定Sql語句的OleDbDataReader,請注意,在使用後請關閉本物件,同時將自動調用closeConnection()來關閉資料庫連接
        /// 方法關閉資料庫連接
        /// </summary>
        /// <param name="sqlstr">傳入的Sql語句</param>
        /// <param name="dr">傳入的ref DataReader 對象</param>

        public static void DataReader(string sqlstr, ref OleDbDataReader dr)
        {
            try
            {
                openConnection();
                comm.CommandText = sqlstr;
                comm.CommandType = CommandType.Text;
                dr = comm.ExecuteReader(CommandBehavior.CloseConnection);
            }

            catch
            {
                try
                {
                    if (dr != null && !dr.IsClosed)
                        dr.Close();
                }

                catch
                {
                }

                finally
                {
                    closeConnection();
                }

            }

        }
  

        /// <summary>
        /// 返回指定Sql語句的DataSet
        /// </summary>
        /// <param name="sqlstr">傳入的Sql語句</param>
        /// <returns>DataSet</returns>

        public static DataSet DataSet(string sqlstr)
        {
            DataSet ds = new DataSet();
            OleDbDataAdapter da = new OleDbDataAdapter();
            try
            {
                openConnection();
                comm.CommandType = CommandType.Text;
                comm.CommandText = sqlstr;
                da.SelectCommand = comm;
                da.Fill(ds);
            }

            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }

            finally
            {
                closeConnection();
            }

            return ds;
        }
  

        /// <summary>
        /// 返回指定Sql語句的DataSet
        /// </summary>
        /// <param name="sqlstr">傳入的Sql語句</param>
        /// <param name="ds">傳入的引用DataSet對象</param>

        public static void DataSet(string sqlstr, ref DataSet ds)
        {
            OleDbDataAdapter da = new OleDbDataAdapter();
            try
            {
                openConnection();
                comm.CommandType = CommandType.Text;
                comm.CommandText = sqlstr;
                da.SelectCommand = comm;
                da.Fill(ds);
            }

            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }

            finally
            {
                closeConnection();
            }

        }

        /// <summary>
        /// 返回指定Sql語句的DataTable
        /// </summary>
        /// <param name="sqlstr">傳入的Sql語句</param>
        /// <returns>DataTable</returns>

        public static DataTable DataTable(string sqlstr)
        {
            OleDbDataAdapter da = new OleDbDataAdapter();
            DataTable Datatable = new DataTable();
            try
            {
                openConnection();
                comm.CommandType = CommandType.Text;
                comm.CommandText = sqlstr;
                da.SelectCommand = comm;
                da.Fill(Datatable);
            }

            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }

            finally
            {
                closeConnection();
            }

            return Datatable;
        }
  

        /// <summary>
        /// 執行指定Sql語句,同時給傳入DataTable進行賦值
        /// </summary>
        /// <param name="sqlstr">傳入的Sql語句</param>
        /// <param name="dt">ref DataTable dt </param>

        public static void DataTable(string sqlstr, ref DataTable dt)
        {
            OleDbDataAdapter da = new OleDbDataAdapter();
            try
            {
                openConnection();
                comm.CommandType = CommandType.Text;
                comm.CommandText = sqlstr;
                da.SelectCommand = comm;
                da.Fill(dt);
            }

            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }

            finally
            {
                closeConnection();
            }

        }
  

        /// <summary>
        /// 返回指定Sql語句的DataView
        /// </summary>
        /// <param name="sqlstr">傳入的Sql語句</param>
        /// <returns>DataView</returns>

        public static DataView DataView(string sqlstr)
        {
            OleDbDataAdapter da = new OleDbDataAdapter();
            DataView dv = new DataView();
            DataSet ds = new DataSet();
            try
            {
                openConnection();
                comm.CommandType = CommandType.Text;
                comm.CommandText = sqlstr;
                da.SelectCommand = comm;
                da.Fill(ds);
                dv = ds.Tables[0].DefaultView;
            }

            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }

            finally
            {
                closeConnection();
            }

            return dv;
        }

    }
  

}