通用的排序的上移下移功能

前两天需要实现一个上移下移功能,就上网上搜了一下,没想到这个简单的小功能也没有搜到特别理想的结果,只有自己动手丰衣足食了,虽然简单,但是希望对大家有所帮助。

功能:实现任意有排序字段表单的上移和下移,并可以按分类来操作排序。

首先是存储过程:

写的稍微有些繁琐,可能是半夜太困了吧

1 ALTER PROCEDURE [dbo].[Proc_Common_UpDown]
  2
  3
  4 @Sign int = 0,   -- 0: 上移 1:下移
  5 @TableName nvarchar(50), -- 表名
  6 @ItemName nvarchar(50),  -- 主键字段名
  7 @ItemID int,             -- 主键ID
  8 @SortName nvarchar(50),     -- 排序ID
  9 @TypeName nvarchar(50)='', -- 分类字段名
10 @TypeValue nvarchar(50)= '' -- 分类值
11
12 AS
13
14 BEGIN
15     SET NOCOUNT ON
16
17     DECLARE
18         @SQL nvarchar(4000),
19         @ThisSort int, -- 当前ID
20         @PREVID int, -- 前一个ID
21         @NextID int,  -- 后一个ID
22         @Count int
23
24     --临时索引表--
25     CREATE TABLE #Tab 
26     (
27         ItemID int,
28         Sort int
29     )
30     SET @SQL = 'INSERT INTO #Tab (ItemID,Sort) SELECT '
31         +@ItemName+','+@SortName+' FROM '+@TableName
32
33     IF (@TypeName<>'' AND @TypeValue<>'') SET @SQL = @SQL+' WHERE '+@TypeName+'='+@TypeValue
34     SET @SQL = @SQL+' ORDER BY Sort ASC '
35     EXEC(@SQL)
36     SET @SQL = ''
37     
38     SELECT @Count = COUNT(*) FROM #Tab
39     SELECT @ThisSort = Sort FROM #Tab WHERE ItemID = @ItemID
40     IF(@ThisSort>1) SELECT @PREVID = ItemID FROM #Tab WHERE Sort=(@ThisSort-1)
41     IF(@ThisSort<@Count) SELECT @NextID = ItemID FROM #Tab WHERE Sort=(@ThisSort+1)
42
43     IF(@Sign=0)
44         BEGIN
45             IF(@ThisSort>1)
46             BEGIN
47                 SET @SQL = 'UPDATE '+@TableName+' SET '+@SortName+'='+CONVERT(varchar(100),(@ThisSort-1))+' WHERE '+@ItemName+' = '+CONVERT(varchar(100),@ItemID) + ';'
48                  + 'UPDATE '+@TableName+' SET '+@SortName+'='+CONVERT(varchar(100),@ThisSort)+' WHERE '+@ItemName+' = '+CONVERT(varchar(100),@PREVID)
49
50             END
51         END
52     ELSE
53         BEGIN
54             IF(@ThisSort<@Count)
55             BEGIN
56                 SET @SQL = 'UPDATE '+@TableName+' SET '+@SortName+'='+CONVERT(varchar(100),(@ThisSort+1))+' WHERE '+@ItemName+' = '+CONVERT(varchar(100),@ItemID) + ';'
57                  + 'UPDATE '+@TableName+' SET '+@SortName+'='+CONVERT(varchar(100),@ThisSort)+' WHERE '+@ItemName+' = '+CONVERT(varchar(100),@NextID)
58             END
59         END
60
61     EXEC(@SQL)
62
63 END
64

时间: 2024-11-08 20:18:27

通用的排序的上移下移功能的相关文章

JS实现一个列表中包含上移下移删除等功能_javascript技巧

最近做了一个项目,包括了一个列表页,为了用户体验,操作均使用JS实现,其中包括在列表中实现上移,下移,删除等功能,前台JS,后端数据修改使用AJAX,本文主要说一下前台JS这块 先看一下页面的截图 看一下它的HTML结构,当然,这与前台切图有关,后端程序人员只负责写自己的JS这块,我以我们项目为例,看一下它们切的HTML <ul class="clearfix"> <li class="courseList"> <div class=&

列表框上移下移用户进行干预排序后排序结果怎么保存?

问题描述 列表框上移下移用户进行干预排序后排序结果怎么保存? 列表框上移下移用户进行干预排序后排序结果怎么保存?怎么在下次运行的时候保留用户干预的排序列表? 解决方案 如何保存用户的列表排序 解决方案二: 保存下用户的干预的动作

kendoui前端框架中的TreeList标签如何实现选中一行进行上移和下移功能

问题描述 kendoui前端框架中的TreeList标签如何实现选中一行进行上移和下移功能 kendoui前端框架中的TreeList标签如何实现选中一行进行上移和下移功能

jQuery实现表格行上移下移和置顶的方法_jquery

本文实例讲述了jQuery实现表格行上移下移和置顶的方法.分享给大家供大家参考.具体实现方法如下: <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <ti

JS实现点击上移下移LI行数据的方法_javascript技巧

本文实例讲述了JS实现点击上移下移LI行数据的方法.分享给大家供大家参考.具体如下: 这里演示JavaScript排序功能,点击按钮实现数据的上移和下称,一共有两组测试效果,上组采用箭头图标控制的方式,更美观,下组是直接使用文字,根据你的需要自行选择.myList为ul的id值,m为0显示文字,m为1显示图片,mO.mT为文字或图片内容. 演示效果如下图所示: 具体代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional

jQuery实现表格行上移下移和置顶的方法

  本文实例讲述了jQuery实现表格行上移下移和置顶的方法.分享给大家供大家参考.具体实现方法如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 6

ListBox实现上移,下移,左移,右移的简单实例

 这篇文章主要介绍了ListBox实现上移,下移,左移,右移的简单实例.需要的朋友可以过来参考下,希望对大家有所帮助    代码如下: <html> <head>     <title>Javascript版选择下拉菜单互移且排序</title>     <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> </hea

上移下移问题,求大神帮助

问题描述 问题是点击研发一部或点击下一页的下属人员上移或下移按钮后,界面跳转到部门列表的总人员查询.如何上移或下移后还返回研发一部的列表?求大神支招 解决方案 解决方案二:jquery很简单B.insertBefore(A)B.insertAfter(A)解决方案三:是保留移动后的位置吗?解决方案四:找你要移动的对象和目标对象然后调用上述方法搞定解决方案五:引用2楼rui888的回复: 是保留移动后的位置吗? 就是移动后刷新研发一部这个界面,现在一刷新就重置到整个部门列表了.解决方案六:引用3楼

jQuery表格行上移下移和置顶的实现方法_jquery

我们在操作列表数据的时候,需要将数据行排列顺序进行调整,如上移和下移行,将行数据置顶等,这些操作都可以在前端通过点击按钮来完成,并且伴随着简单的动态效果,轻松实现表格数据排序. 运行效果图: HTML 页面上是一个简单的数据表格,我们在数据行中分别放置"上移","下移"和"置顶"三个链接,并且分别定义三个class属性,我们来通过jQuery实现这些操作. <table class="table"> <tr&