.net GridView中产品的上移和下移

libo0952 2011-06-16 09:49:15
最近做项目 客户要求他的产品可以在后台调节产品的排列顺序
小弟考虑在表中加个字段(通过判断搞成从1开始到N中间的数字是连续的(1.2.4.5.6.。。n这样的))用来排列顺序,
但是假如中间输出一条 数据 那么 表中的这个字段就不是连续的了。。。 就不能通过改变这个字段来进行对选中的产品的上一条或下一条 进行修改排序了。。。 求哪位大神 指点下 或有更好的思路给我也行 谢谢!~
...全文
153 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
子夜__ 2011-06-16
  • 打赏
  • 举报
回复
简单的。就是移后台数据的过程 然后再绑定
insus 2011-06-16
  • 打赏
  • 举报
回复
guanyelong 2011-06-16
  • 打赏
  • 举报
回复
sorry 是1L
guanyelong 2011-06-16
  • 打赏
  • 举报
回复
2L 正解 绑定的时候按 数字升序就OK了
yue547283947 2011-06-16
  • 打赏
  • 举报
回复
1.2.3.4.5.6 按升序排列 删除了3 就是 1.2.4.5.6


如果你想还是1.2.3.4.5.6 在你删除的时候 取一条数据填充这个3的位置就是了啊
libo0952 2011-06-16
  • 打赏
  • 举报
回复
非常 感谢大家 方法 已经让大家说完了 呵呵
libo0952 2011-06-16
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 telankes2000 的回复:]
先别管什么效率
把功能做出来再说
[/Quote] 谢谢 我也这么想的 把功能做出来 才是王道
qq623932737 2011-06-16
  • 打赏
  • 举报
回复
有两种方法啊
1 就是那个顺序 你查询的时候 把这id号 select* from table order by id asc下 就行啦,如果中间删除了一行 不连续的话 asc也能按从小到大排列啊
,最好后台全部查询出来可以直接修改id号,这样就可以维护顺序了,不用到数据库该
2,用个存储过程 也是一样后台gridview绑定列表,每条数据后面有两个按钮一个向上 一个向下
然后就是调用存储过程了,只需要传给存储过程这条数据的ID 和 一个状态字符1或者0(意思是向上还是向下)

下面是存储过程

我这是餐单的排序一个样子,不过记住了 表的ID(MenuID ) 和排序的ID(SortID ) 是两个列
CREATE proc [dbo].[paixu]
@MenuID int, --点击的要排序的那行的id
@x int --判断是向上还是向下
as
declare @SortID int--点中的那行序号
declare @SortID2 int--点中的那行的上面或下面的序号
declare @MenuID2 int--点中的那行的上面或下面的id号
if(@x=1)
begin

set @SortID=(select sortID from Menu where MenuID=@MenuID)

set @SortID2=(select top 1 sortID from Menu where SortID<@SortID order by sortID desc ) --获取点击那行的上面一行的序号

if(@SortID2>=(select top 1 sortID from Menu order by sortID asc))
begin
set @MenuID2=(select MenuID from Menu where sortID=@SortID2)
update Menu set SortID=@SortID2 where MenuID=@MenuID
update Menu set SortID=@SortID where MenuID=@MenuID2
end
end
else
begin

set @SortID=(select sortID from Menu where MenuID=@MenuID)
set @SortID2=(select top 1 sortID from Menu where SortID>@SortID order by sortID asc )--获取点击那行的下面一行的序号
if(@SortID2<=(select top 1 sortID from Menu order by sortID desc))
Begin
set @MenuID2=(select MenuID from Menu where sortID=@SortID2)
update Menu set SortID=@SortID2 where MenuID=@MenuID
update Menu set SortID=@SortID where MenuID=@MenuID2
end
end
telankes2000 2011-06-16
  • 打赏
  • 举报
回复
先别管什么效率
把功能做出来再说
libo0952 2011-06-16
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 herolg 的回复:]
我做过类似的,我做法是123456,删除3时,把后面的顺序号全部修改,得到的结果是12345,即顺位前移
[/Quote] 先谢谢您的帮忙,但是我想问下 当我的数据非常庞大时, 假设有 100条 那么 这样做在效率上不就很慢了, 而且 费资源啊
herolg 2011-06-16
  • 打赏
  • 举报
回复
我做过类似的,我做法是123456,删除3时,把后面的顺序号全部修改,得到的结果是12345,即顺位前移
libo0952 2011-06-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 yue547283947 的回复:]
1.2.3.4.5.6 按升序排列 删除了3 就是 1.2.4.5.6


如果你想还是1.2.3.4.5.6 在你删除的时候 取一条数据填充这个3的位置就是了啊
[/Quote] 取一条数据填充这个3的位置就是了啊 麻烦您解释下 我从哪里去取一条数据呢?

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧