如何维护新闻的无限级别的分类?
最近的这个新闻分类采用了无限分级分类的设计,上一篇文章介绍了怎么把这些数据绑定到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);
}
}
}
-------------------------------------------
我的数据库结构如下:
部分数据如下,供参考:
