本文实例讲述了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 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程序设计有所帮助。