Asp.Net实现无限分类生成表格的方法(后台自定义输出table)

 更新时间:2016年04月20日 11:53:53   作者:且行且思  
这篇文章主要介绍了Asp.Net实现无限分类生成表格的方法,同时后台自定义输出table表格,详细分析了asp.net生成表格的相关技巧,需要的朋友可以参考下

本文实例讲述了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?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('确删要删除该类及其子类吗?'))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); //调用
      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程序设计有所帮助。

相关文章

  • 获取App.config配置文件中的参数值

    获取App.config配置文件中的参数值

    这篇文章介绍了获取app.config配置文件中的参数值方法,首先是要添加System.Configuration引用,其次类文件中必须有 using System.Configuration;再次App.config添加,最后向App.config配置文件添加参数,下面通过列子给大家讲解下,需要的朋友可以参考下
    2015-07-07
  • Asp.net配合easyui实现返回json数据实例

    Asp.net配合easyui实现返回json数据实例

    这篇文章主要介绍了Asp.net配合easyui实现返回json数据的方法,实例分析了Asp.net配合easyui返回json数据时出现的问题及解决方法,非常具有实用价值的技巧,需要的朋友可以参考下
    2014-12-12
  • ashx介绍以及ashx文件与aspx文件之间的区别

    ashx介绍以及ashx文件与aspx文件之间的区别

    这篇文章主要介绍了ashx以及ashx文件与aspx文件之间的区别。需要的朋友可以过来参考下,希望对大家有所帮助
    2013-12-12
  • asp.net Menu控件+SQLServer实现动态多级菜单

    asp.net Menu控件+SQLServer实现动态多级菜单

    asp.net Menu控件+SQLServer实现动态多级菜单的代码,需要的朋友可以参考下。
    2011-12-12
  • 如何利用IIS调试ASP.NET网站程序详解

    如何利用IIS调试ASP.NET网站程序详解

    这篇文章主要给大家介绍了关于如何利用IIS调试ASP.NET网站程序的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-01-01
  • .Net与JS时间日期格式的转换问题对比分析

    .Net与JS时间日期格式的转换问题对比分析

    这篇文章主要介绍了.Net与JS时间日期格式的转换问题,结合实例形式对比分析了JS与.Net针对时间日期格式的转换处理相关技巧,需要的朋友可以参考下
    2016-08-08
  • win2003服务器asp.net权限设置问题及解决方法

    win2003服务器asp.net权限设置问题及解决方法

    ASP.NET相对于ASP,设置权限方面有点不同,有一点儿设置错了都运行不到。在网上搜索到的都是很垃圾的答案,没有一个用得到的,下面是我自己设置并从中遇到的问题摸索后得到的经验,给大家分享。
    2011-08-08
  • asp.net 开发的一些常用技巧

    asp.net 开发的一些常用技巧

    asp.net开发过程中,发现的一些不错技巧,能用的到的朋友有福了。
    2009-07-07
  • 运用.net core中实例讲解RabbitMQ

    运用.net core中实例讲解RabbitMQ

    RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件),本文详细讲解了RabbitMQ以及运用.net core中实例讲解其6中模式,感兴趣的小伙伴一起来学习吧
    2021-09-09
  • ASP.NET 2.0,C#----图像特效处理

    ASP.NET 2.0,C#----图像特效处理

    ASP.NET 2.0,C#----图像特效处理...
    2007-04-04

最新评论