1. 程式人生 > >通用的排序的上移下移功能

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

前兩天需要實現一個上移下移功能,就上網上搜了一下,沒想到這個簡單的小功能也沒有搜到特別理想的結果,只有自己動手豐衣足食了,雖然簡單,但是希望對大家有所幫助。

功能:實現任意有排序欄位表單的上移和下移,並可以按分類來操作排序。

首先是儲存過程:寫的稍微有些繁瑣,可能是半夜太困了吧

 1 ALTERPROCEDURE[dbo].[Proc_Common_UpDown] 2  3  4 @Signint=0,   -- 0: 上移 1:下移 5 @TableNamenvarchar(50), -- 表名 6 @ItemNamenvarchar(50),  -- 主鍵欄位名 7 @ItemIDint,             
-- 主鍵ID
 8 @SortNamenvarchar(50),     -- 排序ID 9 @TypeNamenvarchar(50)=''-- 分類欄位名10 @TypeValuenvarchar(50)=''-- 分類值11 12 AS13 14 BEGIN15 SET NOCOUNT ON16 17 DECLARE18 @SQLnvarchar(4000),
19
 @ThisSortint-- 當前ID20 @PREVIDint-- 前一個ID21 @NextIDint,  -- 後一個ID22 @Countint23 24 --臨時索引表--25 CREATETABLE #Tab 
26
     (
27
         ItemID int,
28
         Sort int29     )
30
 SET@SQL='INSERT INTO #Tab (ItemID,Sort) SELECT '31 +@ItemName+','+@SortName+' FROM '+@TableName32 33 IF (@TypeName<>''AND@TypeValue<>''SET@SQL=@SQL+' WHERE '+@TypeName+'='+@TypeValue34 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 =@ItemID40 IF(@ThisSort>1SELECT@PREVID= ItemID FROM #Tab WHERE Sort=(@ThisSort-1)
41
 IF(@ThisSort<@CountSELECT@NextID= ItemID FROM #Tab WHERE Sort=(@ThisSort+1)
42
 43 IF(@Sign=0)
44
 BEGIN45 IF(@ThisSort>1)
46
 BEGIN47 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 END51 END52 ELSE53 BEGIN54 IF(@ThisSort<@Count)
55
 BEGIN56 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
 END59 END60 61 EXEC(@SQL)
62
 63 END64 

資料層的公共類:

publicclass Common
    {
        
publicstatic Database db = DatabaseFactory.CreateDatabase("Huoqk_CMS"
);

        
///<summary>
/// 上移下移
        
///</summary>
///<param name="Sign">移動方向:0 上移, 1下移</param>///<param name="TableName">表名</param>///<param name="ItemName">主鍵名</param>///<param name="ItemID">主鍵ID</param>///<param name="SortName">排序欄位</param>///<param name="TypeName">型別名</param>///<param name="TypeValue">型別ID</param>publicstaticvoid UPDown(int Sign, string TableName, string ItemName, int ItemID, string SortName, string TypeName, string TypeValue)
        {
            
string spName ="Proc_Common_UpDown"
;
            DbCommand dbCommand 
=
 db.GetStoredProcCommand(spName);
            db.AddInParameter(dbCommand, 
"Sign"
, DbType.Int32, Sign);
            db.AddInParameter(dbCommand, 
"TableName"
, DbType.String,TableName);
            db.AddInParameter(dbCommand, 
"ItemName"
, DbType.String, ItemName);
            db.AddInParameter(dbCommand, 
"ItemID"
, DbType.Int32, ItemID);
            db.AddInParameter(dbCommand, 
"SortName"
, DbType.String, SortName);
            db.AddInParameter(dbCommand, 
"TypeName"
, DbType.String, TypeName);
            db.AddInParameter(dbCommand, 
"TypeValue"
, DbType.String, TypeValue);
            db.ExecuteNonQuery(dbCommand);
        }
    }

 

資料層(DAL)具體的呼叫CMS_Channel 表的排序功能

publicvoid UPDown(int sign, int itemid)
   {
       Common.UPDown(sign, 
"CMS_Channel""CID", itemid, "Sort"""""
);
   }

至於業務邏輯層或者Web層的呼叫基本就很簡單了:

UPDown(111, 0);上移

UPDown(111, 1);下移

相關推薦

通用排序上移下移功能

前兩天需要實現一個上移下移功能,就上網上搜了一下,沒想到這個簡單的小功能也沒有搜到特別理想的結果,只有自己動手豐衣足食了,雖然簡單,但是希望對大家有所幫助。 功能:實現任意有排序欄位表單的上移和下移,並可以按分類來操作排序。 首先是儲存過程:寫的稍微有些繁瑣,可能是半夜太困

mssql 實現排序上移下移

MSSQL: 儲存過程 -- drop PROCEDURE [dbo].[Proc_sort_UpDown] create PROCEDURE [dbo].[Proc_sort_UpDown] @Sign int = 0, -- 0: 上移 1:下移 @Tabl

AngularJS實現數據列表的增加、刪除和上移下移功能實例

enter 基礎 round 電子郵件 color bsp 基礎功 net 效果圖 轉: http://www.jb51.net/article/91991.htm 這篇文章給大家分享了AngularJS循環實現數據列表的增加、刪除和上移下移等基礎功能,對大家學習Ang

表格資料的上移下移功能

【問題】: 在做專案過程中遇到這個需求,根據顯示的需要把列表資料進行上移或者下移的操作。 【分析】: 資料庫中有position這個欄位來管理板塊列表顯示的順序,那麼當需要上移時,我們需要取到比它po

jquery 實現列表上移下移功能

       由於比較忙,好久沒寫新的文章了,雖然本人寫的文章可能對一些高手來說是小菜一碟,但是對於新手來說還是比較難得,重在為和我一樣的小菜鳥提供一個簡單的實現方法,以及一個思路罷了。        那麼,廢話少說,我們開始進入主題。       今天我們實現的是一個列表

jq實現表格上移/下移/置頂功能

這裡主要是運用了選擇器的一些知識,全部程式碼如下: <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="

分類排序方法——上移下移操作(ASP版)

      最近專案中遇到了上移下移操作的一個操作,以前也看到過,但一直沒有去研究過,這次專案中遇到了,也就去研究了一把,其實實現原理也挺簡單的,說白了就是要記錄資料庫裡的要進行排序表的總記錄數量,然後根據迴圈的次數,多寫幾個隱藏變數,進行上移下移操作的時候進行判斷就可以了。

ThinkPHP 實現新聞後臺資料上移下移功能

public function moveup(){ //獲取上一條新聞資訊 $m = M('News'); $dataOri = $m->where('orderid='.$

js操作table中tr的順序,實現上移下移一行的效果

總體思路是在table外部加個div,修改div的innerHtml實現改變tr順序的效果 具體思路是 獲取當前要移動tr行的rowIndex,在table中刪除掉,然後迴圈table的rows,到了目標行再直接加進去,最後把整體的html賦值給div完成效果 js程式碼如下 /

jqgrid 上移下移單元格

在表格中常常需要調整表格中資料的顯示順序,我用的是jqgrid,實現原理就是將表中的行數儲存到資料庫中,取資料時按行進行排序 1、上移,下移按鈕 <a href="javascript:void(0)" onclick="operateWithOneRowById(up)" class="li

java comparator 排序 定義比較器內部類的方式排序 通用排序方式 非常靈活

class Products implements Comparable<Products>  {private String name;private int num;private Integer price;public String getName()

Android中RecyclerView的item中控制元件的點選事件新增刪除一行、上移下移一行的程式碼實現

Demo展示圖片 佈局程式碼 // (layout)activity_main.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/an

html5仿手機通訊錄按字母排序及搜尋功能

1.實現聯絡人字母排序,點選字母跳轉顯示聯絡人組目錄;2.實現聯絡搜尋,動態顯示符合查詢的聯絡人;詳情見資源:https://download.csdn.net/download/huicaipa1943/10304104效果圖如下:<!DOCTYPE HTML PUB

【Axure】--repeater(中繼器)實現行上移下移

案例效果: 案例描述: 點選上下移動的按鈕,移動相應題型順序。 元件準備: 上移、下移圖示: Repeater: Table做表頭: 題型編號: 操作步驟: 雙擊進入Repeater

jquery select 上移下移

網上搜到的,不太明白這個外掛指的是什麼。 但是把程式碼拷到檔案中,修改。確實可以實現上移下移。 <!--jQuery外掛---MultiSelects(左右選框),支援select下option元素的上移下移 原始碼:--> <!DOCTYPE ht

實現上移下移 置頂置底效果

html <div> <span (click)="caretDirection(col,'up')"><i class="anticon anticon-c

GridView 行交換 GridView 行上移下移

using System; using System.Configuration; using System.Data; //using System.Linq; using System.Web; using System.Web.Security; using Syst

div 上移下移技術

要移到中間,就有上移與下移 <META http-equiv=Content-Type content="text/html; charset=utf-8"> <STYLE> .a7container {FLOAT: left; WIDTH: 385

easyui datagrid實現單行的上移下移,以及儲存移動的結果

    開始接觸easyui感覺他的封裝真是極佳的,善假於物的思想使我們善於站在巨人的肩膀上,人家封裝好這麼好的外掛直接讓俺們使用,我們在需求不同可進行簡單的調整。 </span>//調整展示次序載入圖片 function UpDownFormat(va

table行的上移下移 上下移動

<script type="text/javascript">     $(document).ready(function () {         $('.moveup').bind('click', function (e) {             v