asp.net(C#)html无限分类树 可新增 删除 修改
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ProductSort.aspx.cs" Inherits="ChaoFenPlat_ProductSort" %> <!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 runat="server">
<title>商品分类</title>
<link href="Css/default.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="../js/jquery-1.8.0.min.js"></script>
<!--jquery_dialog-->
<link type="text/css" rel="stylesheet" href="../css/jquery_dialog.css" />
<script type="text/javascript" src="../js/jquery_dialog.js"></script>
<script type="text/javascript" src="../js/common.js"></script>
</head>
<body>
<form id="form1" runat="server">
<div>
<!-- 导航内容 -->
<asp:Literal ID="Literal1" runat="server"></asp:Literal>
</div>
</form>
</body>
</html>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.Text;
using System.Web.UI;
using System.Web.UI.WebControls; public partial class ChaoFenPlat_ProductSort : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//登录检查
ChaoFen.Common.RoleHelper.CheckSession("Login.aspx");
//权限检查
ChaoFen.Common.RoleHelper.RolePage("104701");
Literal1.Text = showtree();
}
} #region 显示权限树 private int S_Isroot;
private string NS_Name;
private string NS_Id;
private string trees;
private StringBuilder BuilderBody = new StringBuilder();
public string showtree()
{
StringBuilder Builder = new StringBuilder();
Builder.AppendLine("<table id='tableAction' class='tableCss'>");
Builder.AppendLine("<th>分类名称</th><th>分类ID</th><th>操作</th>");
DataTable dt = MSCL.SqlHelper.GetDataTable("select * from pr_sort order by sortorder");
showtreeforline(dt, "0", "parentid", "");
Builder.Append(BuilderBody);
Builder.AppendLine("<tr><td colspan='3' align='left'>");
Builder.AppendLine("<a href='javascript:showMyModalDialog(\"ProductSortCmd.aspx?cmd=addtop\",\"600\",\"300\");'>添加顶级分类</a>");
Builder.AppendLine("</td></tr>");
Builder.AppendLine("</table>");
return Builder.ToString();
}
#endregion #region 递归显示HTML树
/// <summary>
/// 递归显示HTML树
/// </summary>
/// <param name="dt">datatable</param>
/// <param name="moduleid">主键ID</param>
/// <param name="tree">tree字符串</param>
public void showtreeforline(DataTable dt, string moduleid, string modulefatherid, string tree)
{
bool ParentBool = true; //是否父节点
if (tree.Length == 0 || tree == "" || tree == String.Empty) S_Isroot = 0;
trees = "1";
string treestr = tree + trees;
DataRow[] dr = dt.Select(modulefatherid + "=" + moduleid); for (int i = 0; i < dr.Length; i++)
{
NS_Name = dr[i].ItemArray[1].ToString();
NS_Id = dr[i].ItemArray[0].ToString();
string Ns_Parentid = dr[i].ItemArray[2].ToString(); if (i + 2 > dr.Length)
{
trees = "0";
treestr = tree + trees;
}
BuilderBody.AppendLine("<tr class='tdbg' >");
BuilderBody.AppendLine("<td vAlign=bottom width='10%' align='center'>" + NS_Id + "</td> ");
BuilderBody.AppendLine("<td valign='bottom' width='60%' style='text-align:left'>"); #region 输出层级关系
for (int k = 0; k < treestr.Length - 1; k++)
{
if (treestr.Substring(k, 1) == "1")
{
BuilderBody.AppendLine(" ");
}
else
{
BuilderBody.AppendLine(" ");
}
}
#endregion #region 判断是否无下级节点
DataRow[] dr1 = dt.Select(modulefatherid + "='" + NS_Id + "'");
if (dr1.Length == 0) //无下级,即末级节点
{
ParentBool = false;
}
else
{
ParentBool = true;
}
#endregion #region 输出树型图片
if (trees == "0")
{
if ((tree == "" || tree == String.Empty || tree == null) && S_Isroot == 0)
{
BuilderBody.AppendLine(" ");
}
else
{ BuilderBody.AppendLine("└");
}
}
else if (tree == "" || tree == String.Empty || tree == null)
{
if (S_Isroot == 1)
{
BuilderBody.AppendLine("├");
}
else
{
BuilderBody.AppendLine("┌");
}
}
else
{
BuilderBody.AppendLine("├ ");
}
#endregion BuilderBody.AppendLine(NS_Name);
BuilderBody.AppendLine("</td>");
BuilderBody.AppendLine("<td width='30%' align='center'>");
BuilderBody.AppendLine(" <a href='javascript:showMyModalDialog(\"ProductSortCmd.aspx?SortID=" + NS_Id + "&cmd=add\",\"600\",\"300\");'>新增下级分类</a> ");
BuilderBody.AppendLine(" <a href='javascript:showMyModalDialog(\"ProductSortCmd.aspx?SortID=" + NS_Id + "&cmd=edit\",\"600\",\"300\");'>修改</a> ");
BuilderBody.AppendLine(" <a href='javascript:showMyModalDialog(\"ProductSortCmd.aspx?SortID=" + NS_Id + "&cmd=del\",\"600\",\"300\");'>删除</a> ");
BuilderBody.AppendLine("</td>");
BuilderBody.AppendLine("</tr>");
showtreeforline(dt, NS_Id, modulefatherid, treestr);
S_Isroot = 1;
}
}
#endregion
}
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ProductSortCmd.aspx.cs" Inherits="ChaoFenPlat_ProductSortCmd" %> <!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 runat="server">
<title>商品分类信息</title>
<link href="css/default.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="../js/common.js"></script>
</head>
<body>
<form id="form1" runat="server">
<div>
<table class="tableCss" width="100%">
<tr>
<td class="tableTitle">
商品分类信息
</td>
</tr>
<tr>
<td>
<table id="tbPR_SORT" class="table" width="100%">
<tr>
<td align="right" style="width: 120px">商品分类名称:</td>
<td align="left"><asp:TextBox ID="txtSORTNAME" runat="server"></asp:TextBox></td>
</tr>
<tr>
<td align="right" style="width: 120px">商品分类描述:</td>
<td align="left"><asp:TextBox ID="txtSORTDESC" runat="server"></asp:TextBox></td>
</tr>
<tr>
<td align="right" style="width: 120px">商品所属分类:</td>
<td align="left">
<asp:DropDownList ID="ddlParentID" runat="server"> </asp:DropDownList>
</td>
</tr>
<tr>
<td align="right" style="width: 120px">商品分类排序:</td>
<td align="left"><asp:TextBox ID="txtSORTORDER" runat="server"></asp:TextBox></td>
</tr>
</table>
</td>
</tr>
<tr>
<td class="tableBottom">
<asp:Button ID="btnPR_SORTCmd" runat="server" CssClass="btn" Text="新增数据"
onclick="btnPR_SORTCmd_Click" /></td>
</tr>
</table> </div>
</form>
</body>
</html>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.Web.UI;
using System.Web.UI.WebControls; public partial class ChaoFenPlat_ProductSortCmd : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//登录检查
ChaoFen.Common.RoleHelper.CheckSession("Login.aspx"); string Action = Request.QueryString["cmd"];
string SortID = Request.QueryString["SortID"];
DataTable dt = MSCL.SqlHelper.GetDataTable("select * from PR_SORT");
if (Action == "add" && !string.IsNullOrEmpty(SortID))
{
AddMethod(dt);
DataRow[] drs = dt.Select("SORTID='" + SortID + "'");
MSCL.ControlsHelper.SetControlValue(ddlParentID, drs[0]["SORTID"].ToString(), true);
btnPR_SORTCmd.Text = "新增商品分类";
}
else if (Action == "edit" && !string.IsNullOrEmpty(SortID))
{
AddMethod(dt);
DataRow[] drs = dt.Select("SORTID='" + SortID + "'");
EditMethod(drs, SortID);
btnPR_SORTCmd.Text = "修改商品分类";
}
else if (Action == "addtop") //添加顶级分类
{
AddMethod(dt);
}
else if (Action == "del") //删除
{
try
{
ChaoFen.BLL.PR_SORT.Delete(Convert.ToInt32(SortID));
ClientScript.RegisterStartupScript(this.GetType(), "CloseRefreshParentForm", "<script>DialogCloseReload('ProductSort.aspx','操作成功!');</script>");
}
catch
{
ClientScript.RegisterStartupScript(this.GetType(), "CloseRefreshParentForm", "<script>alert('操作失败,请检查输入是否正确!');</script>");
}
}
}
} protected void AddMethod(DataTable dt)
{
MSCL.ControlsHelper.CreateLevelDropDown(ddlParentID, dt, "SORTNAME", "SORTID", "PARENTID");
ddlParentID.Items.Insert(0, new ListItem("顶级分类", "0"));
} protected void EditMethod(DataRow[] drs, string SortID)
{
MSCL.ControlsHelper.SetControlValue(ddlParentID, drs[0]["PARENTID"].ToString(), true);
txtSORTNAME.Text = drs[0]["SORTNAME"].ToString();
txtSORTDESC.Text = drs[0]["SORTDESC"].ToString();
txtSORTORDER.Text = drs[0]["SORTORDER"].ToString();
} protected void DelMethod()
{ } protected void btnPR_SORTCmd_Click(object sender, EventArgs e)
{
string Action = Request.QueryString["cmd"];
string SortID = Request.QueryString["SortID"];
string SortName = txtSORTNAME.Text;
string SortDesc = txtSORTDESC.Text;
string SortOrder = txtSORTORDER.Text;
string ParentId = ddlParentID.SelectedItem.Value; try
{
ChaoFen.Models.PR_SORT model = new ChaoFen.Models.PR_SORT();
model.SORTID = Convert.ToInt32(SortID);
model.PARENTID = Convert.ToInt32(ParentId);
model.SORTNAME = SortName;
model.SORTDESC = SortDesc;
model.SORTORDER = Convert.ToInt32(SortOrder); if (Action == "add" && !string.IsNullOrEmpty(SortID))
{
ChaoFen.BLL.PR_SORT.Add(model);
}
else if (Action == "edit" && !string.IsNullOrEmpty(SortID))
{
ChaoFen.BLL.PR_SORT.Update(model);
}
else if (Action == "addtop") //添加顶级分类
{
ChaoFen.BLL.PR_SORT.Add(model);
}
ClientScript.RegisterStartupScript(this.GetType(), "CloseRefreshParentForm", "<script>DialogCloseReload('ProductSort.aspx','操作成功!');</script>");
}
catch
{
ClientScript.RegisterStartupScript(this.GetType(), "CloseRefreshParentForm", "<script>alert('操作失败,请检查输入是否正确!');</script>");
} }
}

asp.net(C#)html无限分类树 可新增 删除 修改的更多相关文章
- 基于bootstrap-treeview做的一个漂亮的无限分类树层级联动菜单
2017年12月11日09:59:15 因为工作需要把原来的bootstrap-treeview做了一些小改动,方便后台开发人员使用 最终效果,看起来还行,但是其实不是特别友好对用户来说,但是对开发者 ...
- asp.net 实现对xml文件的 读取,添加,删除,修改
用于修改站内xml文件 已知有一个XML文件(bookstore.xml)如下:<?xml version="1.0" encoding="gb2312" ...
- php递归方法实现无限分类实例
数组: 代码如下 复制代码 $items = array( array('id' => 1, 'pid' => 0, 'name' => '一级11' ), array('id' ...
- php递归无限分类、根据子类获取所有顶类
//递归无限分类树 public static function diGui($data, $pid) { $arr = collect([]); if (empty($data)) { return ...
- C#无限极分类树-创建-排序-读取 用Asp.Net Core+EF实现之方法二:加入缓存机制
在上一篇文章中我用递归方法实现了管理菜单,在上一节我也提到要考虑用缓存,也算是学习一下.Net Core的缓存机制. 关于.Net Core的缓存,官方有三种实现: 1.In Memory Cachi ...
- C#无限极分类树-创建-排序-读取 用Asp.Net Core+EF实现
今天做一个管理后台菜单,想着要用无限极分类,记得园子里还是什么地方见过这种写法,可今天找了半天也没找到,没办法静下心来自己写了: 首先创建节点类(我给它取名:AdminUserTree): /// & ...
- 后台树状菜单,js实现递归无限分类
//新闻类别管理 public function new_classify() { $arr = M('news_classify')->where("fid = 0")-& ...
- 关于无限分类的树状输出(id,name,pid)类型的
首先创建无限分类的数据表,我这里采用的是id.name.pid这种类型(当然还有很多种无限分类的方式了,比如:id.name.pid.path.left.right左右节点的形式) CREATE TA ...
- MySql无限分类数据结构--预排序遍历树算法
MySql无限分类数据结构--预排序遍历树算法 无限分类是我们开发中非常常见的应用,像论坛的的版块,CMS的类别,应用的地方特别多. 我们最常见最简单的方法就是在MySql里ID ,parentID, ...
随机推荐
- 结队编程--基于GUI的四则运算
coding地址 https://git.coding.net/lizhiqiang0x01/GUI-sizeyunsuan.git 李志强 201421123028 连永刚 201421123014 ...
- SNS团队第一次站立会议(2017.04.22)
一.当天站立式会议照片 本次会议主要内容:进一步明确了团队中各个成员的定位,说明了下一步团队工作的方向 二.每个人的工作 成员 昨天已完成的工作 今天计划完成的工作 罗于婕 系统架构设计及项目数据库设 ...
- 201521123013 《Java程序设计》第5周学习总结
1. 本章学习总结 1.1 尝试使用思维导图总结有关多态和接口的知识点. 1.2可选 使用常规方法总结其他上课内容. 接口:不是类,不能使用new实例化,可用instanceof判断是否实现某接口.接 ...
- 201521123016 《Java程序设计》第13周学习总结
1. 本周学习总结 2. 书面作业 1. 网络基础 1.1 比较ping www.baidu.com与ping cec.jmu.edu.cn,分析返回结果有何不同?为什么会有这样的不同? ping w ...
- JSP引入 - UEditor 富文本编辑器
UEditor JSP 因为是项目第一天就导入了,现在过去一个多星期了,可能会有问题 官网:http://ueditor.baidu.com/website/ 1. 解压对应的UEditor压缩包至 ...
- .Net45下HttpClient的几个缺陷
前言 最近在写WebClientApi这个组件,底层使用HttpClient,发现HttpClient有许多低级的错误,使用者一不小心就可能会正常的去调用它的这些错误,得不到预期的结果.本文我把我认为 ...
- 13.Linux键盘驱动 (详解)
版权声明:本文为博主原创文章,未经博主允许不得转载. 在上一节分析输入子系统内的intput_handler软件处理部分后,接下来我们开始写input_dev驱动 本节目标: 实现键盘驱动,让开发板的 ...
- mount挂载和交换分区swap
目录 mount挂载 挂载方法 选项 查看设备 卸载命令 文件挂载配置文件fstab 交换文件与分区 swap优先级 三个工具free,df,du 扩展 移动介质 使用光盘 挂载USB设备 mount ...
- Hibernate逆向工程【PowerDesigner、idea环境下】
为什么要使用逆向工程 由于我们每次编写Hibernate的时候都需要写实体,写映射文件.而且Hibernate的映射文件也容易出错.而逆向工程可以帮我们自动生成实体和映射文件,这样就非常方便了. 使用 ...
- python 集合的操作
list_1 = set([1,2,3,4,5])#print(list_1,type(list_1))list_2 = set([1,2,3,6,7,8,9,10])#print(list_2,ty ...