asp.net sql无限极分类实例程序

     asp.net sql无限极分类实例程序

  数据库结构

  代码如下

  create table category

  (

  id                  int,

  clsno            nvarchar(50),

  clsname       nvarchar(50),

  clslist            nvarchar(250),

  clsparentno  nvarchar(50),

  clslistlen       int

  )

  代码如下

  * *******************************/

  using System;

  using System.Collections;

  using System.Collections.Generic;

  using System.Text;

  using System.Data;

  using PlugNT.Safe;

  using PlugNT.Database.Common;

  using PlugNT.Database.Common.Simple;

  using PlugNT.Custom;

  using PlugNT.Cms.Model;

  namespace PlugNT.Cms.DAL

  {

  /// <summary>

  /// 无限极分类(由于字段的长度只能嵌套25层,且只能用于少量重要型的数据存储)

  /// </summary>

  public class Category

  {

  private static string currTableName = WebConfig.TablePrefix + "category";

  #region 获取

  /// <summary>

  /// 获取clsno

  /// </summary>

  /// <param name="clsno"></param>

  /// <returns></returns>

  public string GetClsno(int id)

  {

  StringBuilder strSql = new StringBuilder();

  strSql.Append("select top 1 clsno from " + currTableName);

  strSql.Append(" where id=" + id.ToString());

  return Convert.ToString(DbHelper.GetSingle(strSql.ToString()));

  }

  /// <summary>

  /// 获取clslist

  /// </summary>

  /// <param name="clsname"></param>

  /// <returns></returns>

  public string GetClslistByName(string clsname)

  {

  StringBuilder strSql = new StringBuilder();

  strSql.Append("select top 1 clslist from " + currTableName);

  strSql.Append(" where clsname='" + StringHelper.SqlFilter(clsname) + "'");

  return Convert.ToString(DbHelper.GetSingle(strSql.ToString()));

  }

  /// <summary>

  /// 获取clslist

  /// </summary>

  /// <param name="clsno"></param>

  /// <returns></returns>

  public string GetClslistByNo(string clsno)

  {

  StringBuilder strSql = new StringBuilder();

  strSql.Append("select top 1 clslist from " + currTableName);

  strSql.Append(" where clsno='" + StringHelper.SqlFilter(clsno) + "'");

  return Convert.ToString(DbHelper.GetSingle(strSql.ToString()));

  }

  /// <summary>

  /// 根据父级编号得到clsname

  /// </summary>

  /// <param name="clsno"></param>

  /// <returns></returns>

  public string GetClsnameByParentNo(string clsno)

  {

  StringBuilder strSql = new StringBuilder();

  strSql.Append("Select top 1 clsname From " + currTableName);

  strSql.Append(" Where clsparentno='" + StringHelper.SqlFilter(clsno) + "'");

  return DbHelper.GetSingle(strSql.ToString())。ToString();

  }

  /// <summary>

  /// 得到父级clsno

  /// </summary>

  /// <param name="clsno"></param>

  /// <returns></returns>

  public string GetParentClsno(string clsno)

  {

  StringBuilder strSql = new StringBuilder();

  strSql.Append("Select top 1 clsparentno From " + currTableName);

  strSql.Append(" Where clsno='" + StringHelper.SqlFilter(clsno) + "'");

  return DbHelper.GetSingle(strSql.ToString())。ToString();

  }

  /// <summary>

  /// 得到模型

  /// </summary>

  /// <param name="clsno"></param>

  /// <returns></returns>

  public CategoryInfo GetCategoryInfo(string clsno)

  {

  DataTable dt = GetCategoryTable(clsno);

  CategoryInfo model=null;

  if(dt.Rows.Count>0)

  {

  DataRow dr=dt.Rows[0];

  model=new CategoryInfo();

  model.id=(int)dr["id"];

  model.clsno=dr["clsno"].ToString();

  model.clsname=dr["clsname"].ToString();

  model.clslist=dr["clslist"].ToString();

  model.clsparentno=dr["clsparentno"].ToString();

  model.clslistlen=Int32.Parse(dr["clslistlen"].ToString());

  }

  return model;

  }

  /// <summary>

  /// 得到类别表

  /// </summary>

  /// <param name="clsno"></param>

  /// <returns></returns>

  public DataTable GetCategoryTable(string clsno)

  {

  StringBuilder strSql = new StringBuilder();

  strSql.Append("Select top 1 * From " + currTableName);

  strSql.Append(" Where clsno='" + StringHelper.SqlFilter(clsno) + "'");

  DataTable dt = DbHelper.TabQuery(strSql.ToString());

  return dt;

  }


#endregion

  #region 添加,修改,删除操作

  /// <summary>

  /// 添加一个菜单项

  /// </summary>

  /// <param name="model"></param>

  /// <returns></returns>

  public bool Add(CategoryInfo model)

  {

  StringBuilder strSql = new StringBuilder();

  strSql.Append("insert into " + currTableName);

  strSql.Append(" (clsno,clsname,clslist,clsparentno,clslistlen)");

  strSql.Append(" values (");

  strSql.Append("'" + StringHelper.SqlFilter(model.clsno) + "',");

  strSql.Append("'" + StringHelper.SqlFilter(model.clsname) + "',");

  strSql.Append("'" + StringHelper.SqlFilter(model.clslist) + "',");

  strSql.Append("'" + StringHelper.SqlFilter(model.clsparentno) + "',");

  strSql.Append(" " +model.clslistlen );

  strSql.Append(")");

  return (DbHelper.ExecuteSql(strSql.ToString()) > 0) ? true : false;

  }

  /// <summary>

  /// 编辑一个菜单项

  /// </summary>

  /// <param name="model"></param>

  /// <param name="isSubModel">是否下级菜单</param>

  /// <returns></returns>

  public bool Update(CategoryInfo model, bool isSubModel)

  {

  StringBuilder strSql = new StringBuilder();

  strSql.Append("update " + currTableName);

  strSql.Append(" set ");

  if (!isSubModel)

  {

  strSql.Append("clsname='" + StringHelper.SqlFilter(model.clsname) + "',");

  strSql.Append("clsparentno='" + StringHelper.SqlFilter(model.clsparentno) + "',");

  }

  strSql.Append("clslist='" + StringHelper.SqlFilter(model.clslist) + "',");

  strSql.Append("clslistlen=" + model.clslistlen );

  strSql.Append(" where clsno='" + StringHelper.SqlFilter(model.clsno) + "' ");

  //同步更新子菜单项

  DataTable  dt = GetOrderSubList(model.clsno);

  if (dt.Rows.Count > 0)

  {

  foreach (DataRow dr in dt.Rows)

  {

  CategoryInfo imodel = new CategoryInfo();

  string Subclslist = model.clslist + dr["clsno"].ToString()。Trim() + ",";

  imodel.clslist = Subclslist;

  imodel.clslistlen = model.clslistlen + 1;

  Update(imodel,true);

  }

  }

  return (DbHelper.ExecuteSql(strSql.ToString()) > 0) ? true : false;

  }

  /// <summary>

  /// 删除菜单项

  /// </summary>

  /// <param name="clsno"></param>

  /// <returns></returns>

  public bool Delete(string clsno)

  {

  StringBuilder strSql = new StringBuilder();

  DataTable dt = GetListRow(clsno);

  if (dt.Rows.Count > 0)

  {

  strSql.Append("Delete From " + currTableName);

  strSql.Append(" where clslist like '" + dt.Rows[0]["clslist"].ToString()。Trim() + "%'");

  }

  return (DbHelper.ExecuteSql(strSql.ToString()) > 0) ? true : false;

  }

  #endregion

  #region 获取列表

  /// <summary>

  /// 判断一个父类编号是否存在

  /// </summary>

  public bool ParentExists(string clsno)

  {

  StringBuilder strSql = new StringBuilder();

  strSql.Append("select count(1) from " + currTableName);

  strSql.Append(" where clsparentno='" + StringHelper.SqlFilter(clsno) + "'");

  return DbHelper.Exists(strSql.ToString());

  }
/// <summary>

  /// 获取全部菜单名及列表

  /// </summary>

  /// <returns></returns>

  public DataTable GetList()

  {

  StringBuilder strSql = new StringBuilder();

  strSql.Append("select id,clsno,clsname,clslist,clsparentno,clslistlen from " + currTableName);

  return DbHelper.TabQuery(strSql.ToString());

  //clsno,clsname,clslist,clslistlen,indexfile,listfile,showfile,createpath,ismap

  }

  /// <summary>

  /// 获取菜单列表(排序)

  /// </summary>

  /// <returns></returns>

  public DataTable GetOrderList()

  {

  StringBuilder strSql = new StringBuilder();

  strSql.Append("select id,clsno,clsname,clslist,clsparentno,clslistlen from " + currTableName);

  strSql.Append(" Order By clslist Asc"); // Order By clsorder Asc,clslist Asc

  return DbHelper.TabQuery(strSql.ToString());

  }

  /// <summary>

  /// 获取clsno的包含菜单列表

  /// </summary>

  /// <param name="clsno"></param>

  /// <returns></returns>

  public DataTable GetListRow(string clsno)

  {

  StringBuilder strSql = new StringBuilder();

  strSql.Append("select top 1 clsno,clslist,clslistlen from " + currTableName);

  strSql.Append(" where clsno='" + StringHelper.SqlFilter(clsno) + "' ");

  return DbHelper.TabQuery(strSql.ToString());

  }

  /// <summary>

  /// 获取该菜单项的所有子菜单项(因为clslist在表中都不同所以按clsorder排序无效果)

  /// </summary>

  /// <param name="clsno"></param>

  /// <returns></returns>

  public DataTable GetOrderSubList(string clsno)

  {

  StringBuilder strSql = new StringBuilder();

  strSql.Append("select id,clsno,clsname,clslist,clsparentno,clslistlen from " + currTableName);

  strSql.Append(" where clsparentno='" + StringHelper.SqlFilter(clsno) + "' ");

  strSql.Append(" Order By clslist Asc");

  return DbHelper.TabQuery(strSql.ToString());

  }

  #endregion

  #region contact me

  public string Help()

  {

  return @"";

  }

  #endregion

  }

  }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值