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
这又该如何实现?
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
这又该如何实现?
我现在已经查出了错误,是循环的条件搞错。
我按照从小到大的顺序,而事实上数据插入并不是按从小到大的顺序排列,只是我们读取的时候用了Order By,所以应该逐行遍历,要用到foreach
遍历字段N(要改变的字段)
if(N>=K)
UPDATE N=N+1
我觉得这样也可以实现。只是建议
{
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,其他的都不加呢?
wish you success
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这个存储过程应该不会错。