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, ...
随机推荐
- CloseableHttpClient 源码
public abstract class CloseableHttpClient implements HttpClient, Closeable { private final Log log = ...
- GIF、JPEG 和 PNG的区别在哪…
原文地址:GIF.JPEG 和 PNG的区别在哪里?作者:苗得雨 GIF.JPEG 和 PNG 是三种最常见的图片格式. GIF:1987 年诞生,常用于网页动画,使用无损压缩,支持 256 种颜色( ...
- 【Alpha】——Sixth Scrum Meeting
一.今日站立式会议照片 二.每个人的工作 成员 昨天已完成的工作 今天计划完成的工作 李永豪 对统计出现的问题进一步完善 学习将项目做成APK 郑靖涛 完善报表设计 协助设计账目一览表板块 杨海亮 测 ...
- Java第七周学习总结
1. 本周学习总结 以你喜欢的方式(思维导图或其他)归纳总结集合相关内容. 参考资料: XMind 2. 书面作业 ArrayList代码分析 1.1 解释ArrayList的contains源代码 ...
- 201521123067 《Java程序设计》第4周学习总结
201521123067 <Java程序设计>第4周学习总结 1. 本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容. ●总结: (1)在 ...
- 201521123050《Java程序设计》第3周学习总结
1. 本周学习总结 2. 书面作业 1.代码阅读 public class Test1 { private int i = 1;//这行不能修改 private static int j = 2; p ...
- 201521123063 java第一周总结
20152112306 <Java程序设计>第一周学习总结 1.本周学习总结(2.20-2.26) java语言的特点: (1)简约且简单 (2)平台无关性 (3)面向对象 (4)多线程. ...
- #黑客攻防实战详解#[Chapter 1]
1.1 ①配置模拟入侵环境 ②配置网络拓扑
- 201521123028 《Java程序设计》第13周学习总结
本周学习总结 书面作业 网络基础 1.1 比较ping www.baidu.com与ping cec.jmu.edu.cn,分析返回结果有何不同?为什么会有这样的不同? Ans:cec.jmu.edu ...
- Java、javax、org、sun、Java.util等常用包的区别、详解、实例
Java.javax.org.sun包都是jdk提供的类包,且都是在rt.jar中.rt.jar是JAVA基础类库(java核心框架中很重要的包),包含lang在内的大部分功能,而且rt.jar默认就 ...