• 上下移动 04.16


    实例效果图:

    本次代码演示图

    1、表结构

    2、业务逻辑主要在存储过程中

    CREATE PROC up_move_0416 --用户自定义的存储过程一般以'up_'开头
        @moveId INT,--操作的自身Id
        @isUp INT--是否是上下移【1:上移 , 2:下移】
     AS
     BEGIN
        DECLARE @currfSort INT;
        SELECT @currfSort=sort FROM  Move0416 WHERE id=@moveId;
        DECLARE @targetId INT =0,@targetSort int =0;
        IF @isUp=1 --如果是上移[找比当前sort值大的最小记录:top,order by sort desc]
          SELECT TOP 1 @targetId=id,@targetSort=sort FROM  dbo.Move0416 WHERE sort>@currfSort ORDER BY sort DESC
        ELSE       --反之下移[找比当前sort值小的最大记录:top,order by]
          SELECT TOP 1  @targetId=id,@targetSort=sort FROM  dbo.Move0416 WHERE sort<@currfSort ORDER BY sort  
        IF  IsNull(@targetId,0)>0
          BEGIN
            update Move0416 set Sort = @targetSort where Id = @moveId--更新当前记录
           update Move0416 set Sort = @currfSort where Id = @targetId--更新目标记录
          END
     END

    3、实现mvc+linq

         3.1 Model层

     public static class MoveData
        {
            public static IList<BlogMove> GetEntities(this Table<BlogMove> source)
            {
                try
                {   /**
                     * 本身linq就有 getmodel,getlist方法
                     * 之所以在写是为了对异常进行处理,包括数据验证等 
                     */
                    return source.ToList();
                }
                catch (Exception)
                {
                    return null;
                    //记录错误日志
                }
            }
            public static BlogMove GetModel(this Table<BlogMove> source, int moveId)
            {
                try
                {
                    return source.Where(m => m.id == moveId).Single();
                    //return (from s in source
                    //       where s.id==moveId
                    //       select s).FirstOrDefault();
                    //return source.Single(n => n.Fid == id);
                }
                catch
                {
                    return null;
                }
            }
            /// <summary>
            /// 新插入的sort(已有的最大sort+1)
            /// </summary>
            /// <param name="source"></param>
            /// <param name="moveId"></param>
            /// <returns></returns>
            public static int AddNewSort(this  Table<BlogMove> source, int moveId)
            {
                int sort = 0;
                try
                {
                    sort = source.Where(m => m.id == moveId).Max(m => (int)m.Sort);
                }
                catch (Exception)
                {
    
                }
                return ++sort;
            }
        }

         3.2 Controller层

    public class MoveController : Controller
        {
            BlogDBDataContext db = new BlogDBDataContext();
            //
            // GET: /Move/
    
            public JsonResult ListJSON()
            {
                var  moveList=db.BlogMove.GetEntities();
                return Json(moveList.OrderBy(m=> m.Sort));
            }
    
            public ActionResult MoveSort()
            {
                int id = Convert.ToInt32(Request["id"]);
                bool isUp = Convert.ToBoolean(Request["isUp"]);
                db.up_move_0416(Convert.ToInt32(id), Convert.ToBoolean(isUp) ? 1 : 0); 
                return Json(new Result());
            }
            public ActionResult List()
            {
                return View();
            }
        }
    
        public class Result
        {
            public bool Msg { get; private set; }
            public Result()
            {
                Msg = true;
            }
    
        }

         3.3 View层

    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>List</title>
    
        <script src="http://www.cnblogs.com/Scripts/jquery-1.3.2.js" type="text/javascript"></script>
        <script type="text/javascript">
        $(function(){ 
           InitData();
        })
        
        function InitData(){ $("#tabList tr").remove();
            $.getJSON("/Move/ListJSON",{},function(data){ 
               $("#tabList").append("<tr><th>名称</th><th>排序</th><th>操作</th></tr>");
                 $.each(data, function (i, item) { 
                   var title=item.Title;
                   var id=item.id;
                   var sort=item.Sort;
                   $("#tabList").append("<tr><td>"+title+"<td><td>"+sort+"</td><td>"+
                   "<a  href='javascript::' onclick='javascript:Move("+id+",true)'>上移</a>|"+
                    "<a  href='javascript::' onclick='javascript:Move("+id+",false)'>下移</a>"
                   +"</td></tr>");
                 });
             }); 
        }
        
        function Move(id,f){
               var params={id:id,isUp:f};
               $.getJSON("/Move/MoveSort",params,function(data){
             
                    if(data.Msg){    
                      InitData();
                    } 
               })    
        }
        </script>
        
    </head>
    <body>
        <div >
         <table cellpadding="0" cellspacing="0" id="tabList">
           
         </table>
        </div>
    </body>
    </html>
  • 相关阅读:
    PHP 输出true false
    code::blocks 注释快捷键
    GDAL 网址
    wine qq2011安装
    C++ ACM解题
    C++内存分配秘籍—new,malloc,GlobalAlloc详解(Zhuan)
    grub4dos初级教程-入门篇(Z)
    GDAL 编译(转)
    ubuntu双系统安装
    shapfile格式说明(转)
  • 原文地址:https://www.cnblogs.com/zjflove/p/3025268.html
Copyright © 2020-2023  润新知