C#无限栏目分级程序代码分享 好东西第2/3页

 更新时间:2006年12月28日 00:00:00   作者:  

C#无限栏目分级程序代码分享[3] 核心代码放送之清空、排序

using System;
using System.Data;

namespace catalog
{
/// <summary>
/// action 的摘要说明。
/// </summary>
public class action:db
{
  private static bool[] ShowLine_={false,false,false,false,false,false,false,false,false,false};
  private static System.Collections.ArrayList ShowLine=new System.Collections.ArrayList(ShowLine_);
  public action()
  {
  }

  public void deleteAllCatalog(string table)
  {
   string sql="delete from " + table;
   base.exesql(sql);
  }

  public int downClass(string table,int classid)
  {
   string sql;
   sql="select * from " + table + " where classid=" + classid;
   int orderid=0,rootid=0,previd=0,nextid=0,depth=0,parentid=0,child=0;
   IDataReader dr=base.getdr(sql);
   if (dr.Read() )
   {
    orderid=(int)dr["orderid"];
    rootid=(int)dr["rootid"];
    previd=(int)dr["previd"];
    nextid=(int)dr["nextid"];
    depth=(int)dr["depth"];
    parentid=(int)dr["parentid"];
    child=(int)dr["child"];
   }
   else
   {
    dr.Close();
    dr.Dispose();
    return 1;//要下降排序的栏目不存在
   }
   dr.Close();
   dr.Dispose();

   if (nextid==0)
    return 2;//要下降排序的栏目下面没有栏目,无法被下降
   if (nextid==0 && previd==0)
    return 3;//要下降排序的栏目的这一级别只有它一个,没办法被提升

   return upClass(table,nextid);
  }

  #region 向上移动栏目
  public int upClass(string table,int classid)
  {
   string sql;
   //先得到要提升的classid的栏目信息
   sql="select * from " + table + " where classid=" + classid;
   int orderid=0,rootid=0,previd=0,nextid=0,depth=0,parentid=0,child=0;
   IDataReader dr=base.getdr(sql);
   if (dr.Read() )
   {
    orderid=(int)dr["orderid"];
    rootid=(int)dr["rootid"];
    previd=(int)dr["previd"];
    nextid=(int)dr["nextid"];
    depth=(int)dr["depth"];
    parentid=(int)dr["parentid"];
    child=(int)dr["child"];
   }
   else
   {
    dr.Close();
    dr.Dispose();
    return 1;//要提升排序的栏目不存在
   }
   dr.Close();
   dr.Dispose();

   if (previd==0)
    return 2;//要提升排序的栏目上面没有栏目,无法被提升
   if (nextid==0 && previd==0)
    return 3;//要提升排序的栏目的这一级别只有它一个,没办法被提升

   //得到上面一个栏目的信息
   sql="select * from " + table + " where classid=" + previd;
   int orderid_=0,rootid_=0,previd_=0,nextid_=0,depth_=0,parentid_=0,child_=0;
   dr=base.getdr(sql);
   if (dr.Read() )
   {
    orderid_=(int)dr["orderid"];
    rootid_=(int)dr["rootid"];
    previd_=(int)dr["previd"];
    nextid_=(int)dr["nextid"];
    depth_=(int)dr["depth"];
    parentid_=(int)dr["parentid"];
    child_=(int)dr["child"];
   }
   else
   {
    dr.Close();
    dr.Dispose();
    return 4;//要提升排序的栏目的上面的栏目不存在,被非法删除
   }
   dr.Close();
   dr.Dispose();

   //把原来previd=classid的换为previd=previd
   sql="update "+ table + " set previd=" + previd + " where previd=" + classid;
   base.exesql(sql);
   //把原来nextid=previd换为classid
   sql="update "+ table + " set nextid=" + classid + " where nextid=" + previd;
   base.exesql(sql);

   //处理提升的栏目nextid->previd,previd->previd_,orderid->orderid_
   sql="update "+ table + " set nextid=" + previd + ",previd=" + previd_ + " where classid=" + classid;
   base.exesql(sql);

   int child_num=0,child_num_=0;//两个栏目的子栏目数目
   string[] temp;
   string children,children_;
   children="0";
   children_="0";

   if (child>0)
   { 
    children=getChildren(table,classid);
    temp=children.Split('','');
    child_num=temp.Length;
   }
   if (child_>0)
   {
    children_=getChildren(table,previd);
    temp=children_.Split('','');
    child_num_=temp.Length;
   }

   //处理上一个栏目nextid->nextid,previd->classid
   sql="update "+ table + " set nextid=" + nextid + ",previd=" + classid + " where classid=" + previd;
   base.exesql(sql);

   sql="update " + table + " set orderid=orderid - "+ (child_num_+1) + " where classid in ("+ (classid + "," + children) +")";
   base.exesql(sql);
   sql="update " + table + " set orderid=orderid + "+ (child_num+1) + " where classid in ("+ (previd + "," + children_) +")";
   base.exesql(sql);

   return 0;
  }
  #endregion

查看原文:http://ent.omeweb.com/book/content.aspx?id=1804

相关文章

  • C#传值方式实现不同程序窗体间通信实例

    C#传值方式实现不同程序窗体间通信实例

    Form2构造函数中接收一个string类型参数,即Form1中选中行的文本,将Form2的TextBox控件的Text设置为该string,即完成了Form1向Form2的传值
    2013-12-12
  • C#验证身份证的函数

    C#验证身份证的函数

    因做项目需要,参考网上资料写了一个身份证验证的C#方法,本方法是在VS2005[C/S] 下写的。前面2个是网友们的实现方法,第三个才是项目中使用的哦,小伙伴们参考下吧。
    2015-05-05
  • 利用WinForm实现上左右布局的方法详解

    利用WinForm实现上左右布局的方法详解

    现在90%的管理系统都是在用上左右这种布局方式,真可谓是经典永流传。本文将利用WinForm实现上左右布局这一布局效果,感兴趣的可以学习一下
    2022-09-09
  • c#使用netmail方式发送邮件示例

    c#使用netmail方式发送邮件示例

    这篇文章主要介绍了c#使用netmail方式发送邮件的示例,大家参考使用吧
    2014-01-01
  • C#连接mysql的方法【基于vs2010】

    C#连接mysql的方法【基于vs2010】

    这篇文章主要介绍了C#连接mysql的方法,基于vs2010平台较为详细的讲述了C#操作mysql所需的组件下载、安装及连接mysql操作实现代码,需要的朋友可以参考下
    2017-03-03
  • C#泛型约束的深入理解

    C#泛型约束的深入理解

    本篇文章是对C#中的泛型约束进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • C#中Timer定时器类的简单使用

    C#中Timer定时器类的简单使用

    定时器就是经过固定时间,执行固定任务,本文主要介绍了C#中Timer定时器类的简单使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-05-05
  • c#继承与多态使用示例

    c#继承与多态使用示例

    继承是面向对象程序设计的主要特征之一,允许重用现有类去创建新类的过程。下面使用示例学习一下c#继承与多态
    2014-01-01
  • C#的winform控件命名规范

    C#的winform控件命名规范

    这篇文章主要介绍了C#的winform控件命名规范,对各种常用控件的命名规范做了较为详细的讲解,需要的朋友可以参考下
    2015-01-01
  • Unity排行榜优化滚动效果

    Unity排行榜优化滚动效果

    这篇文章主要为大家详细介绍了Unity排行榜优化滚动效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-07-07

最新评论