<%@ 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, ...
随机推荐
-
关于yuv与rgb的互转
来自以下网址:http://*.com/questions/9465815/rgb-to-yuv420-algorithm-efficiency #define CLIP(X) ...
-
App.js – 用于移动 Web App 开发的 JS 界面库
App.js 是一个轻量级的 JavaScript UI 库,用于创建像本地应用程序的移动 Web 应用而不牺牲性能和体验.它是跨平台的,特定的UI设计,配置类似原生的过渡效果.App.js 的目的是 ...
-
使用Rxjava缓存请求
最近,我尝试使用RxJava开发了一款闲时备份app.我必须承认,一旦你get到了正确的方式,RxJava几乎感觉就像作弊.一切看起来更简洁,多个请求能够被组合,且非常容易控制.通过在UI线程观察和在 ...
-
itext 落雨 out of membery Memory Optimization
Memory Optimization If a document deals with a lot of data or large elements, such as images, it is ...
-
html 自定义标签使用实现方法
通过指定html命名空间的名字来定义自定义标签:默认的一些标签p div等都在html默认的命名空间下.而自定义的标签可以放在自定义的命名空间下,可通过xmlns:命名空间名 来指定,而自定义标签需要 ...
-
详解EBS接口开发之物料导入API
create_item inv_item_grp.create_item(p_commit => fnd_api.g_true, -- p_item_rec => l_item_rec, ...
-
.net ML机器学习中遇见错误记录
避免入坑: 1.错误提示 numClasses must be at least 2 大概是训练模型的数据分类必须是两种,如下错误: 正确数据集如下:
-
【JMeter】【性能测试】分布式远程服务器
jmeter分布式简单步骤说明: 1:添加远程服务器IP到配置文件 在JMETER_HOME / bin / jmeter.properties中,找到名为“ remote_hosts ” 的属性,并 ...
-
HTML 表单中的验证
凡要验证格式的元素均需绑定datatype属性,datatype可选值内置有10类,用来指定不同的验证格式. 如果还不能满足您的验证需求,可以传入自定义datatype,自定义datatype是一个非 ...
-
如何使用 Swift 开发简单的条形码检测器?
[编者按]本文作者为 Matthew Maher,主要手把手地介绍如何用 Swift 构建简单的条形码检测器.文章系 OneAPM 工程师编译整理. 超市收银员对货物进行扫码,机场内录入行李或检查乘客 ...