前兩天需要實現乙個上移下移功能,就上網上搜了一下,沒想到這個簡單的小功能也沒有搜到特別理想的結果,只有自己動手豐衣足食了,雖然簡單,但是希望對大家有所幫助。
功能:實現任意有排序字段表單的上移和下移,並可以按分類來操作排序。
首先是儲存過程:寫的稍微有些繁瑣,可能是半夜太睏了吧
1alter
procedure
[dbo].
[proc_common_updown]2
34@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
12as
1314
begin
15set
nocount
on16
17declare
18@sql
nvarchar
(4000
),19
@thissort
int,
--當前id
20@previd
int,
--前乙個id
21@nextid
int,
--後乙個id
22@count
int23
24--
臨時索引表--
25create
table
#tab 26(
27itemid
int,
28sort
int29)30
set@sql='
insert into #tab (itemid,sort) select '31
+@itemname+'
,'+@sortname+'
from '+
@tablename
3233if(
@typename
<>
''and
@typevalue
<>
'')
set@sql
=@sql+'
where '+
@typename+'
='+@typevalue
34set
@sql
=@sql+'
order by sort asc '35
exec
(@sql)36
set@sql=''
3738
select
@count
=count(*
) from
#tab
39select
@thissort
=sort
from
#tab
where
itemid
=@itemid
40if
(@thissort
>1)
select
@previd
=itemid
from
#tab
where
sort=(
@thissort-1
)41if(
@thissort
<
@count
) select
@nextid
=itemid
from
#tab
where
sort=(
@thissort+1
)4243if
(@sign=0
)44begin
45if
(@thissort
>1)
46begin
47set
@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
50end
51end
52else
53begin
54if
(@thissort
<
@count)55
begin
56set
@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
end59
end60
61exec
(@sql)62
63end64
資料層的公共類:
public
class
common}
資料層(dal)具體的呼叫:cms_channel 表的排序功能
public
void
updown(
intsign,
intitemid)
至於業務邏輯層或者web層的呼叫基本就很簡單了:
updown(111, 0);上移
updown(111, 1);下移
**:
上移 下移功能
實現資料的上移和下移功能 實現效果如下 功能實現過程為 上移和下移是交換兩條資料的位置序號。我將主要業務放在service,具體操作放在dao中。上移的service層 public void moveup long id 交換position的值 int temp forum.getpositio...
js上移下移功能
今天分享一下專案裡面用到的乙個小功能,實現上移下移的功能。這裡樣式的話就不寫了,可以根據自己的需求來定義,主要的還是邏輯部分。var moveupordown 500 當前節點的父節點的上乙個兄弟節點運動實現下移效果 t parents bar prev stop animate 500,funct...
通用版上移下移儲存過程
今天終於寫出乙個通用版的上移下移儲存過程,表明,主鍵名,排序欄位名等都是動態的,之前寫了個針對特殊表的上移下移操作顯然顯得很不靈活。在下面的儲存過程中,包含了許多寫動態儲存過程的思想。由於我是新手,尤其是對於動態儲存過程 trans sql 剛剛接觸。接下來一篇寫點關於動態儲存過程的!順便總結一下該...