ASP.NET - 多级分类

表结构:

表数据:

最终效果:

前端代码:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Test.aspx.cs" Inherits="APManage.Test" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>

        <asp:TreeView ID="TreeView1" runat="server">
        </asp:TreeView>

    </div>
    </form>
</body>
</html>

后端代码:

using System;
using System.Data;
using System.Web.UI.WebControls;
using System.Data.SqlClient;

namespace APManage
{
    public partial class Test : System.Web.UI.Page
    {

        private readonly string ConnString = @"server = HUANGFU-PC; database = DB_APManage; integrated security = true";
        private DataTable dt = null;

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                dt = new DataTable();
                GetMenuToDataTable("select * from Tb_APCategory", dt);
                BindTree(dt, null, "1000");
            }
        }

        private void BindTree(DataTable dtSource, TreeNode parentNode, string parentID)
        {
            DataRow[] rows = dtSource.Select(string.Format("ParentID={0}", parentID));
            foreach (DataRow row in rows)
            {
                TreeNode node = new TreeNode();
                node.Text = row["CategoryName"].ToString();
                node.Value = row["ParentID"].ToString();
                BindTree(dtSource, node, row["ID"].ToString());
                if (parentNode == null)
                {
                    this.TreeView1.Nodes.Add(node);
                }
                else
                {
                    parentNode.ChildNodes.Add(node);
                }
            }
        }

        private DataTable GetMenuToDataTable(string query, DataTable dt)
        {
            using (SqlConnection conn = new SqlConnection(ConnString))
            {
                SqlCommand cmd = new SqlCommand(query, conn);
                SqlDataAdapter ada = new SqlDataAdapter(cmd);
                ada.Fill(dt);
            }
            return dt;
        }
    }
}
时间: 2024-10-25 16:20:15

ASP.NET - 多级分类的相关文章

(转)smarty实现多级分类的方法

--http://www.aspku.com/kaifa/php/44679.html 这篇文章主要介绍了smarty实现多级分类的方法,涉及循环读取的技巧,非常具有实用价值,需要的朋友可以参考下 本文实例讲述了smarty实现多级分类的方法.分享给大家供大家参考.具体分析如下: 这里简单的介绍一下利用php smarty 多级分类读出与循环方法,单循环很简单,但是多级就要复杂一点,下面我们来看看,感兴趣的朋友可以看来一下: 复制代码代码如下: <?php$result=mysql_query(

SQLite中使用CTE巧解多级分类的级联查询

在最近的活字格项目中使用ActiveReports报表设计器设计一个报表模板时,遇到一个多级分类的难题:需要将某个部门所有销售及下属部门的销售金额汇总,因为下属级别的层次不确定,所以靠拼接子查询的方式显然是不能满足要求,经过一番实验,利用了CTE(Common Table Expression)很轻松解决了这个问题! 举例:有如下的部门表 以及员工表 如果想查询所有西北区的员工(包含西北.西安.兰州),如下图所示: 如何用CTE的方式实现呢? Talk is cheap. Show me the

SQL处理多级分类,查询结果呈树形结构

对于多级分类常规的处理方法,很多程序员可能是用程序先读取一级分类记录,然后通过一级分类循环读取下面的子分类 这样处理的弊端是:如果数据量大,子分类很多,达到4级以上,这方法处理极端占用数据库连接池 对性能影响很大. 如果用SQL下面的CTE递归处理的话,一次性就能把结果给查询出来,而且性能很不错 比用程序处理(数据量很大的情况),临时表性能更好,更方便 with area as(select *,id px,cast(id as nvarchar(4000)) px2 from region w

EXCEL中多级分类汇总空白字段填充

使用场景,多级分类汇总后,在汇总的字段中显示空白,这样对我们直接取值做表带来十分不更(假像有5000条记录,1000条汇总项) 相关技术,INDIRECT函数,单元格定位功能. 在数据区域外任意一个单元格编辑好INDIRECT函数,=INDIRECT(ADDRESS(ROW()-1,COLUMN(),4)),如下图 先选择好上面编辑好函数的单元格,并复制,接下来选择好需要填充的空白字段,再时行定位操作,如下图          选择好空白单元格后,直接按下ctrl+v,如下图完工. 效果图

数据库多级分类代码(MSSQL存储过程版)

说明 相信多级分类在任何一个信息系统中都会用到,网上也能找到很多版本,下面这个是基于MSSQL存储过程版的, 手上还有VB跟C#版的,不过这几年数据库一直用MSSQL,编程语言却从VBScript到C#又到PB, 搞到现在这套分类代码分别用VB.C#.PB实现了一遍,浪费了不少时间,NND神马多数据库啊!!!哥被忽悠了. 分类采用前缀编码的方式,编码使用字符串类型的,当然也有使用二进制实现的牛人^_^. 表结构说明(表Category,ClassId,ClassName,Code 为分类相关字段

Select显示多级分类列表

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>在下拉列表中显示的多级树形菜单</t

关于多级分类的封装

现在在公司用到了关于多级分类的菜单树,关于封装成树形结构传给前端,下面提供几个方式: 1:传统封装:每一级循环一次得到该子类 @Override public List<Map<String, Object>> getCatalist(Integer sch_id) { //得到一级导航 List<Map<String, Object>> list = courseDao.getCatalist(sch_id,0); //循环一级分类 for(Map<

大量多级分类数据的获取、缓存、搜索查询 怎么设计最快 ?

1.数据量大2.多级分类3.首先要获取所有数据4.获取到所有数据后 有搜索功能(搜索到的数据不管几级都要获取到它的所有父级和子级 存在和搜索名称相符合的标为红色) 现在我为了开始获取全部数据和后期搜索都用一个方法 我就获取到所有分类id和其父级子集放在一起 然后比如现在不是搜索 开始是全部数据肯定很多重复的 我去重 然后通过这些id去获取所有信息 最后再循环改变搜索相符的字体颜色(和搜索公用) 最后再循环组合成树状结构数据 因为数据量大的话 老循环我感觉可能会慢 怎么优化下 搜索和初始化所有数据

使用PopupWindow + 2个ListView实现仿 美团/淘宝/百度糯米 多级分类菜单效果

本例要实现的是诸如美团/淘宝/百度糯米 多级分类菜单效果.当分类数量非常多时可以考虑采用两级分类,而诸如美团这种表现方式是一个不错的选择. 首先上效果图:      主要代码: 1. PopupWindow初始化过程: popupWindow = new PopupWindow(this); View view = LayoutInflater.from(this).inflate(R.layout.popup_layout, null); leftLV = (ListView) view.fi