<%@ 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无限分类树 可新增 删除 修改的更多相关文章

  1. 基于bootstrap-treeview做的一个漂亮的无限分类树层级联动菜单

    2017年12月11日09:59:15 因为工作需要把原来的bootstrap-treeview做了一些小改动,方便后台开发人员使用 最终效果,看起来还行,但是其实不是特别友好对用户来说,但是对开发者 ...

  2. asp.net 实现对xml文件的 读取,添加,删除,修改

    用于修改站内xml文件 已知有一个XML文件(bookstore.xml)如下:<?xml version="1.0" encoding="gb2312" ...

  3. php递归方法实现无限分类实例

    数组:  代码如下 复制代码 $items = array( array('id' => 1, 'pid' => 0, 'name' => '一级11' ), array('id' ...

  4. php递归无限分类、根据子类获取所有顶类

    //递归无限分类树 public static function diGui($data, $pid) { $arr = collect([]); if (empty($data)) { return ...

  5. C#无限极分类树-创建-排序-读取 用Asp.Net Core+EF实现之方法二:加入缓存机制

    在上一篇文章中我用递归方法实现了管理菜单,在上一节我也提到要考虑用缓存,也算是学习一下.Net Core的缓存机制. 关于.Net Core的缓存,官方有三种实现: 1.In Memory Cachi ...

  6. C#无限极分类树-创建-排序-读取 用Asp.Net Core+EF实现

    今天做一个管理后台菜单,想着要用无限极分类,记得园子里还是什么地方见过这种写法,可今天找了半天也没找到,没办法静下心来自己写了: 首先创建节点类(我给它取名:AdminUserTree): /// & ...

  7. 后台树状菜单,js实现递归无限分类

    //新闻类别管理 public function new_classify() { $arr = M('news_classify')->where("fid = 0")-& ...

  8. 关于无限分类的树状输出(id,name,pid)类型的

    首先创建无限分类的数据表,我这里采用的是id.name.pid这种类型(当然还有很多种无限分类的方式了,比如:id.name.pid.path.left.right左右节点的形式) CREATE TA ...

  9. MySql无限分类数据结构--预排序遍历树算法

    MySql无限分类数据结构--预排序遍历树算法 无限分类是我们开发中非常常见的应用,像论坛的的版块,CMS的类别,应用的地方特别多. 我们最常见最简单的方法就是在MySql里ID ,parentID, ...

随机推荐

  1. MSH:一个简单SH工具实现

    本文将分为不同的Part,分别实现Shell的一部分功能. msh从CSAPP的SHLAB出发,逐渐完善SHELL功能,并移植到自己的OS上. Github: https://github.com/H ...

  2. java.lang.OutOfMemoryError 解决程序启动内存溢出问题

    java.lang.OutOfMemoryError: Java heap space Myeclipse里面部署的java web项目,浏览器访问的时候出现错误: type Exception re ...

  3. CRC与MD5的异同

    php中CRC32的用法: crc32 - 计算一个字符串的 crc32 多项式 生成 string 参数的 32 位循环冗余校验码多项式--: 这句话从英文翻译过来的,不正确,准确的说应该是这么理解 ...

  4. dnsmasq一次成功的配置

    第一次用这个小软件,感觉还不错,因为没有像bind那样配置起来繁琐,并且我们也不需要去配置很多文件,内外网访问互不干涉. 我是在centos6.5下进行配置的: 先说说自己的理解: dnsmasq先去 ...

  5. 一些LVS实验配置、工具和方案

    最近做了一些LVS配置和方案的验证实验,将过程中用到的一些配置.工具和具体的解决方案记录一下.使用DR模式.验证一种不中断业务的RealServer升级或者重启方案. 网络规划: 节点 IP地址 ce ...

  6. 201521123119《Java程序设计》第12周学习总结

    1. 本周学习总结 Q1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 书面作业 将Student对象(属性:int id, String name,int age,doub ...

  7. 201521123121 《Java程序设计》第13周学习总结

    1. 本周学习总结 以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. 1.两类传输协议:TCP:UDP TCP/IP协议的名称中只有TCP这个协议名,但是在TCP/IP的传输层 ...

  8. Java:Object类的equals()方法 如何编写一个完美的equals()方法

    一  代码实例: package freewill.objectequals;  /** * @author freewill * @see Core Java page161 * @desc get ...

  9. 2017年AR大会上海站干货分享

    怀着即兴奋又激动的心情,踏上了第二次去上海的高铁,全长约1400公里行驶6小时15分钟,不算漫长的6个多小时里,对于不长出差的我来说,可谓是一种煎熬,再加上晕车的毛病,在去高铁的路上已经渐渐发作,但好 ...

  10. 银河麒麟操作系统打开VMware报vmmon无法编译

    使用银河麒麟操作系统打开VMware可能会报vmmon无法编译 这个时候... 将/usr/src/linux-headers-xxx/include/miscdevice.h第71行void改为in ...