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, ...
随机推荐
- OV7670读操作
读时序共分为五个部分 首先发送start,然后发送OV7670的器件地址,ov6070的ID是0x42,0x42+一位响应位 发送ov7670的寄存器地址,这里可以读取它的厂商识别号 ,比如1c 发 ...
- Apache配置网站根目录
Apache是世界使用排名第一的Web服务器软件.它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一. 在安装 Apache 时,系统会给定一 ...
- C++ Primmer 学习笔记
一.开始 (一)输入输出 1.endl的作用 endl操纵符用于结束当前行,将与设备关联的缓冲区内容刷新到设备中.如果没有这个字符,一旦程序突然崩溃,就可能导致输出还停留在缓冲区里,而不显示到设备. ...
- JS基础--函数与BOM、DOM操作、JS中的事件以及内置对象
前 言 絮叨絮叨 这里是JS基础知识集中讲解的第三篇,也是最后一篇,三篇JS的基础,大多是知识的罗列,并没有涉及更难得东西,干货满满!看完这一篇后,相信许多正在像我一样正处于初级阶段的同学, ...
- 微信小程序scroll标签的测试
一:testscroll.wxml的代码如下.testview.js自动生成示例代码 //testscroll.wxml <view class="section__title&quo ...
- 团队作业4---第一次项目冲刺(ALpha)版本 第六天
一.Daily Scrum Meeting照片 二.燃尽图 三.项目进展 a.完成所有基础功能 b.正在进行测试调试 四.困难与问题 1.测试前没有理清业务逻辑,导致前期测试深度不够: 2.在验证过去 ...
- 201521123081《Java程序设计》 第3周学习总结
1. 本周学习总结 初学面向对象,会学习到很多碎片化的概念与知识.尝试学会使用思维导图将这些碎片化的概念.知识组织起来.请使用纸笔或者下面的工具画出本周学习到的知识点.截图或者拍照上传. 参考资料:百 ...
- 201521123096《Java程序设计》第九周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 2. 书面作业 本次PTA作业题集异常 1.常用异常 题目5-1 1.1 截图你的提交结果(出现学号) 1.2 自己 ...
- [ JDK ] 列表转数组 toArray
<T> T[] toArray(T[] a) :该方法返回一个数组,数组元素包含了 List<T> 中的所有元素,数组中的元素顺序和 List<T> 中的元素顺序保 ...
- Java-判断一个数是不是素数
import java.util.Scanner; /** * @author 薛定谔的猫 * java判断一个数是不是素数 * * 素数又称质数,是指在一个大于1的自然数中,除了1和本身之外,不能被 ...