本文实例讲述了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
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" + row["monitor_grp_id"] + "'>添加子类</a> "; returnString += "<a href='class_modi.aspx" + row["monitor_grp_id"] + "'>修改</a> "; returnString += "<a href='class_del.aspx" + row["monitor_grp_id"] + "' onclick=\"javascript:{if(!confirm('确删要删除该类及其子类吗">删除</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
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
<%@ 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
string s="<table>" s+="<tr><td>"; s+=变量值; s+="</td></tr></table>"; ResPonse.Write(s);
至于循环及其其他的方法自己构造
更多关于asp.net相关内容感兴趣的读者可查看本站专题:《asp.net文件操作技巧汇总》、《asp.net ajax技巧总结专题》及《asp.net缓存操作技巧总结》。
希望本文所述对大家asp.net程序设计有所帮助。
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。