1
2
3
4
5
6
本来是这样排序,假如我要把3删除掉,那么3以后的值全部都要减1,重新排序形成
1
2
3
4
5
应该如何实现?与此类似
1
2
3
4
5
假如我要在3的下面插入一条数据,那么先更新原来的排序,3下面的值全部都加1,新插入的数据值为3+1。重新排序后形成
1
2
3
4
5
6
这又该如何实现?

解决方案 »

  1.   

    具体点。
    我现在已经查出了错误,是循环的条件搞错。
    我按照从小到大的顺序,而事实上数据插入并不是按从小到大的顺序排列,只是我们读取的时候用了Order By,所以应该逐行遍历,要用到foreach
      

  2.   

    k=要插入的数据
    遍历字段N(要改变的字段)
    if(N>=K)
     UPDATE N=N+1
    我觉得这样也可以实现。只是建议
      

  3.   

    for(int i=int.Parse(txtOrderNum.Text);i<ds.Tables[0].Rows.Count;i++)
    {
    myCategory.UpdateSCategoryOrderNum(int.Parse(ds.Tables[0].Rows[i][1].ToString()),txtOrderNum.Text);
    }
    /*foreach(DataRow r in ds.Tables[0].Rows)
    {
    myCategory.UpdateSCategoryOrderNum(int.Parse(r[1].ToString()),txtPCategory.Text);
    }*/
    Response.Write("<script>alert('添加成功!')</script>");我的思路和你是一样,可为什么插进去之后只有下面一个值加1,其他的都不加呢?
      

  4.   

    没有判断if(N>=K)吧,加个条件试试。。
    wish you success
      

  5.   

    试过了,不成功。
    ALTER PROCEDURE Sp_Category_UpdateSCategoryOrderNum
    /*
    添加子类后更新OrderNum的值
    */
    @OrderNum int,
    @CategoryName varchar(50)
    AS
    select @OrderNum=OrderNum from Category where CategoryName=@CategoryName
    update Category set OrderNum=@OrderNum+1 where OrderNum>@OrderNum
    RETURN这个存储过程应该不会错。