使用C#從Access建立樹狀目錄
Access Database download: db1.rar
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;
}
}
}
using