本文實(shí)例講述了Asp.Net實(shí)現(xiàn)無(wú)限分類生成表格的方法。分享給大家供大家參考,具體如下:
數(shù)據(jù)結(jié)構(gòu) monitor_group
monitor_grp_id monitor_grp_name parent_id level childCount orderby
[int,自動(dòng)遞增] [nvarchar,not null] [int,not null] [int,not null] [int,not null] [int ,null]
1 數(shù)據(jù)庫(kù)服務(wù)器 0 1 2
2 應(yīng)用服務(wù)器 0 1 2
3 系統(tǒng)服務(wù)器 0 1 0
4 WEB服務(wù)器 1 2 0
5 郵件服務(wù)器 1 2 0
6 代理服務(wù)器 2 2 0
7 Ftp服務(wù)器 2 2 0
\App_code\data.cs
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 的摘要說(shuō)明
/// /summary>
///
namespace yihan
{
namespace Data
{
public class myDataBind
{
public myDataBind()
{
//
//TODO: 在此處添加構(gòu)造函數(shù)邏輯
//
}
public static string GetTree_monitor_grp_id(DataTable dt, int parent_id, ref string returnString)
{
//綁定目錄樹(shù)
//dt:DataTable對(duì)象;parent_id:父ID;returnString:輸出引用變量;
DataRow[] dr = dt.Select("parent_id=" + parent_id);
int currentLenght = 0; //當(dāng)前次數(shù)
foreach (DataRow row in dr)
{
string nodeImg = ""; //節(jié)點(diǎn)圖片
string treeLineImg = ""; //樹(shù)線
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++)
{
//計(jì)算treeLineImg
if (i == Convert.ToInt32(row["level"]))
{
if (currentLenght == dr.Length) //判斷當(dāng)前次數(shù)是否與本次dr總數(shù)量相等
{ 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> nbsp;";
returnString += "a href='class_modi.aspx?monitor_grp_id=" + row["monitor_grp_id"] + "'>修改/a> nbsp;";
returnString += "a href='class_del.aspx?monitor_grp_id=" + row["monitor_grp_id"] + "' onclick=\"javascript:{if(!confirm('確刪要?jiǎng)h除該類及其子類嗎?'))return false;}\">刪除/a> nbsp;";
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
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); //調(diào)用
dt.Dispose();
conn.Close();
}
}
}
class_list.aspx
%@ 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">監(jiān)視器組名稱/th>
th width="9%" bgcolor="#BAD8EF">級(jí)別/th>
th width="15%" bgcolor="#BAD8EF">子節(jié)點(diǎn)總數(shù)/th>
th width="29%" bgcolor="#BAD8EF">操作/th>
/tr>
tr>
td colspan="5" style="padding-left:6px;background:#DBDBDB;">監(jiān)視器組/td>
/tr>
asp:Literal ID="Literal1" runat="server">/asp:Literal>
/table>
/form>
/body>
手寫(xiě)Table
string s="table>"
s+="tr>td>";
s+=變量值;
s+="/td>/tr>/table>";
ResPonse.Write(s);
至于循環(huán)及其其他的方法自己構(gòu)造
更多關(guān)于asp.net相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《asp.net文件操作技巧匯總》、《asp.net ajax技巧總結(jié)專題》及《asp.net緩存操作技巧總結(jié)》。
希望本文所述對(duì)大家asp.net程序設(shè)計(jì)有所幫助。
您可能感興趣的文章:- asp.net多選項(xiàng)卡頁(yè)面的創(chuàng)建及使用方法
- iis6網(wǎng)站屬性沒(méi)有asp.net選項(xiàng)卡的解決辦法
- C#更改tabControl選項(xiàng)卡顏色的方法
- C#實(shí)現(xiàn)多選項(xiàng)卡的瀏覽器控件
- ASP.NET 中 Button、LinkButton和ImageButton 三種控件的使用詳解
- ASP.NET中訪問(wèn)DataGrid中所有控件值的方法
- 支持Ajax跨域訪問(wèn)ASP.NET Web Api 2(Cors)的示例教程
- ASP.NET 中ImageMap控件的用法
- ASP.NET中Label控件用法詳解
- ASP.NET中MultiView和View選項(xiàng)卡控件的使用方法