從資料庫讀取資料動態生成樹形選單示例
阿新 • • 發佈:2019-01-03
用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; } }
效果圖