本文實例講述了Asp.Net實現無限分類生成表格的方法。分享給大家供大家參考,具體如下:
數據結構 monitor_group
monitor_grp_id monitor_grp_name parent_id level childCount orderby
[int,自動遞增] [nvarchar,not null] [int,not null] [int,not null] [int,not null] [int ,null]
1 數據庫服務器 0 1 2
2 應用服務器 0 1 2
3 系統服務器 0 1 0
4 WEB服務器 1 2 0
5 郵件服務器 1 2 0
6 代理服務器 2 2 0
7 Ftp服務器 2 2 0
\App_code\data.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
|
using System; using System.Data; using MySql.Data.MySqlClient; 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; /// <summary> ///common 的摘要說明 /// </summary> /// namespace yihan { namespace Data { public class myDataBind { public myDataBind() { // //TODO: 在此處添加構造函數邏輯 // } public static string GetTree_monitor_grp_id(DataTable dt, int parent_id, ref string returnString) { //綁定目錄樹 //dt:DataTable對象;parent_id:父ID;returnString:輸出引用變量; DataRow[] dr = dt.Select( "parent_id=" + parent_id); int currentLenght = 0; //當前次數 foreach (DataRow row in dr) { string nodeImg = "" ; //節點圖片 string treeLineImg = "" ; //樹線 currentLenght += 1; if (Convert.ToInt32(row[ "childCount" ]) > 0) {nodeImg = "<img src='images/treeExpand.gif' align='absmiddle'>" ;} else {nodeImg = "<img src='images/treeNode.gif' align='absmiddle'>" ;} for (var i = 1; i <= Convert.ToInt32(row[ "level" ]); i++) { //計算treeLineImg if (i == Convert.ToInt32(row[ "level" ])) { if (currentLenght == dr.Length) //判斷當前次數是否與本次dr總數量相等 { treeLineImg += "└ " ; } else { treeLineImg += "├ " ; } } else { treeLineImg += "│ " ; } } returnString += "<tr>\n" ; returnString += "<td align='left'>" + treeLineImg + nodeImg + " " + row[ "monitor_grp_name" ] + "</td>\n" ; returnString += "<td align='center'>" + row[ "level" ] + "</td>\n" ; returnString += "<td align='center'>" + row[ "childCount" ] + "</td>\n" ; returnString += "<td align='center'>" ; returnString += "<a href='class_add.aspx?monitor_grp_id=" + row[ "monitor_grp_id" ] + "'>添加子類</a> " ; returnString += "<a href='class_modi.aspx?monitor_grp_id=" + row[ "monitor_grp_id" ] + "'>修改</a> " ; returnString += "<a href='class_del.aspx?monitor_grp_id=" + row[ "monitor_grp_id" ] + "' onclick=\"javascript:{if(!confirm('確刪要刪除該類及其子類嗎?'))return false;}\">刪除</a> " ; returnString += "</td>\n" ; returnString += "</tr>\n" ; GetTree_monitor_grp_id(dt, Convert.ToInt32(row[ "monitor_grp_id" ]), ref returnString); } return returnString; } //GetCatalogTree End } //myDataBind End } } |
class_list.aspx.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
using System; using System.Collections; using System.Configuration; using System.Data; 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 yihan.Data; public partial class monitor_monitor_group_class_list : System.Web.UI.Page { protected void Page_Load( object sender, EventArgs e) { if (!IsPostBack) { DataTable dt = new DataTable(); string resultString = "" ; string sql = "select * from monitor_group order by orderby desc,monitor_grp_id" ; DbConn conn = new DbConn(); dt = conn.DataTable(sql); Literal1.Text = myDataBind.GetTree_monitor_grp_id(dt, 0, ref resultString); //調用 dt.Dispose(); conn.Close(); } } } |
class_list.aspx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
<%@ Page Language= "C#" AutoEventWireup= "true" CodeFile= "class_list.aspx.cs" Inherits= "monitor_monitor_group_class_list" %> <body> <form id= "form1" runat= "server" > <table class = "conBox" width= "100%" border= "0" cellpadding= "0" cellspacing= "1" bgcolor= "#66AADD" > <tr align= "center" bgcolor= "#999999" > <th width= "36%" bgcolor= "#BAD8EF" >監視器組名稱</th> <th width= "9%" bgcolor= "#BAD8EF" >級別</th> <th width= "15%" bgcolor= "#BAD8EF" >子節點總數</th> <th width= "29%" bgcolor= "#BAD8EF" >操作</th> </tr> <tr> <td colspan= "5" style= "padding-left:6px;background:#DBDBDB;" >監視器組</td> </tr> <asp:Literal ID= "Literal1" runat= "server" ></asp:Literal> </table> </form> </body> |
手寫Table
1
2
3
4
5
|
string s= "<table>" s+= "<tr><td>" ; s+=變量值; s+= "</td></tr></table>" ; ResPonse.Write(s); |
至于循環及其其他的方法自己構造
希望本文所述對大家asp.net程序設計有所幫助。