|  | 网站首页 | .Net研究 | 
您现在的位置: 程序员之路 >> .Net研究 >> 语言技术区 >> 新手技术 >> 文章正文
赞助商链接
频 道 导 航
.Net研究频道栏目导航
相 关 文 章
如何维护新闻的无限级别的分类?           
如何维护新闻的无限级别的分类?
作者:datasky 文章来源:不详 更新时间:2007-5-10 10:01:26

如何维护新闻的无限级别的分类?

最近的这个新闻分类采用了无限分级分类的设计,上一篇文章介绍了怎么把这些数据绑定到DropDownList控件并以阶梯形式一目了然的列举出来,现在的问题是:如果将某一个级别的分类进行了调整,向下调或者向上调,也就是当级别发生变化的时候,原来归属于它的下级该怎么处理?按道理来说,应该是“继续跟党走”,所有的下级分类应该一起更新,保持自该级别以下的所有级别的一致性!否则,三级变成了一级,那三级下属的四级分类怎么处理?当然,根据不同的情况,有不同的要求,我这里只是“一起移动”的实现方法,其实就是一个循环,代码如下:[但是这个地方有一个问题需要注意:就是修改的时候,不允许将类别设置为自身的下级,或者设置到当前类别下属的类别下面,不然就会出问题的,所以程序里还需要进行判断。]
-----------------
  protected void EditLB(int id, string mc, string sm, int sjbh)
    {
        int tempLB_Jb;
        string tempLB_Lj;
        int tempLB_Sjbh;

        if (sjbh == 0)
        {
            tempLB_Jb = 1;
            tempLB_Lj = "0";
            tempLB_Sjbh = 0;
        }
        else
        {
            LB _lb2 = new LB();
            _lb2.LB_Id = sjbh;
            DataTable myDataTable = _lb2.ReadLBByLB_Id();

            tempLB_Jb = Convert.ToInt32(myDataTable.Rows[0]["lb_jb"]) + 1;
            tempLB_Lj = myDataTable.Rows[0]["lb_lj"].ToString() + "," + sjbh.ToString();
            tempLB_Sjbh = sjbh;
        }

        if (id == sjbh)
        {
            Response.Write("<script>alert('不可以调整为自身的下级!');this.location.href=('admin_news_class.aspx');</script>");
            Response.End();
        }

        if (tempLB_Lj.IndexOf(id.ToString()) >= 0)
        {
            Response.Write("<script>alert('不可以调整为自身的直属下级!');this.location.href=('admin_news_class.aspx');</script>");
            Response.End();
        }

        LB _lb = new LB();
        _lb.LB_Id = id;
        _lb.LB_Mc = mc;
        _lb.LB_Jb = tempLB_Jb;
        _lb.LB_Lj = tempLB_Lj;
        _lb.LB_Sjbh = tempLB_Sjbh;

        if (sm == "")
        {
            _lb.LB_Sm = mc;
        }
        else
        {
            _lb.LB_Sm = sm;
        }

        if (_lb.EditLBByLB_Id())
        {
            LB _lb3 = new LB();
            _lb3.LB_Sjbh = id;
            DataTable myDataTable3 = _lb3.ReadLBByLB_Sjbh();

            foreach (DataRow dr in myDataTable3.Rows)
            {
                EditLB(Convert.ToInt32(dr["lb_id"]), Convert.ToString(dr["lb_mc"]), Convert.ToString(dr["lb_sm"]), id);
            }
        }  
       
    }
-------------------------------------------
我的数据库结构如下:


部分数据如下,供参考:


文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • .Net研究栏目导航
    网站频道导航