jquery 實現table row拖動排序

aspx file:

<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/jquery-ui-interactiondatepicker.min.js"></script>
    <script type="text/javascript">
        function setSortable() {
            $("#admintbl tbody").sortable({
                update: function (event, ui) {
                    var f = ui.item;
                    var n = f.next('tr');
                    var fid = f.attr('fid');
                    var bid = 0;
                    //console.log('Reordering fair=' + f.attr('fid'));
                    if (n.length > 0) {
                        //console.log('Before fair='+n.attr('fid'));
                        bid = n.attr('fid');
                    }
                    alert('send');
                    $.post('Success_Story.ashx', { "fairid": fid, "beforeid": bid }, function (data) {
                        if (data.success == 'true') { /*location.reload();alert('success');*/ } else alert(data.message);
                    }, "json");
                }
            });
        }
        $(document).ready(function () {
            setSortable(); 
        });
    </script>
<table>
<!--for i=1;i<rowcount;i++-->
	<tr fid=<%# Eval("id") %> >
            <td><%# Eval("company") %></td>
            <td><%# Eval("order") %></td>
            <td><%# Eval("status") %></td>
        </tr>
</table>

ashx file:

<%@ WebHandler Language="C#" Class="Success_Story" %>

using System;
using System.Web;

public class Success_Story : IHttpHandler {

    private string reply = "{ \"success\":\"true\", \"message\":\"\" }";
    private string msg = "";
    private const string tbl = "tablename";
    private const string ofield = "ordercol";
    private int id, beforeid;

    public void ProcessRequest(HttpContext context)
    {
        if (!int.TryParse((context.Request.Form["fairid"]), out id)) msg = "Invaild Story ID";
        if (!int.TryParse((context.Request.Form["beforeid"]), out beforeid)) msg = "Invaild Story ID";
        try
        {
            MyData db = new MyData();
            db.openConnection();
            int pgoi = db.intquery("SELECT " + ofield + " FROM " + tbl + " WHERE ss_status=0 AND story_id=" + id.ToString());
            if (msg == "" && db.intquery("SELECT COUNT(*) FROM " + tbl + " WHERE ss_status=0 AND story_id=" + id.ToString()) < 1)
                msg = "No Story is found";
            if (msg == "")
            {
                if (beforeid > 0)
                {
                    if (msg == "" && db.intquery("SELECT COUNT(*) FROM " + tbl + " WHERE ss_status=0 AND story_id=" + beforeid.ToString()) < 1)
                        msg = "Next Story not found";
                    if (msg == "")
                    {
                        int b4o = db.intquery("SELECT " + ofield + " FROM " + tbl + " WHERE ss_status=0 AND story_id=" + beforeid.ToString());
                        //decrement (-1) order all pages after current page
                        string cmd = "UPDATE " + tbl + " SET " + ofield + "=" + ofield + "-1 WHERE " + ofield + ">" + pgoi.ToString();
                        db.exeCommand(cmd);
                        //update origin before page order
                        if (b4o > pgoi) b4o--;
                        //increment (+1) order of before page and all pages after before page
                        cmd = "UPDATE " + tbl + " SET " + ofield + "=" + ofield + "+1 WHERE " + ofield + ">=" + b4o;
                        db.exeCommand(cmd);
                        //set order of current page be the origin before order                    
                        cmd = "UPDATE " + tbl + " SET " + ofield + "=" + b4o.ToString() + " WHERE story_id=" + id.ToString();
                        db.exeCommand(cmd);
                    }
                }
                else
                {  //place current page at the end
                    //decrement (-1) order all pages after current page
                    string cmd = "UPDATE " + tbl + " SET " + ofield + "=" + ofield + "-1 WHERE " + ofield + ">" + pgoi.ToString();
                    db.exeCommand(cmd);
                    //set order of current page be number of children of its parent
                    int max = db.intquery("SELECT MAX(" + ofield + ") FROM " + tbl + " WHERE ss_status=0") + 1;
                    cmd = "UPDATE " + tbl + " SET " + ofield + "=" + max + " WHERE story_id=" + id.ToString();
                    db.exeCommand(cmd);
                }
            }
            db.closeConnection();
        }
        catch (Exception x)
        {
            reply = "{ \"success\":\"false\", \"message\":\"" + x.Message + " >> " + x.StackTrace + "\" }";
        }
        if (msg != "") reply = "{ \"success\":\"false\", \"message\":\"" + msg + "\" }";
        context.Response.ContentType = "text/plain";
        context.Response.Write(reply);
    }
 
    public bool IsReusable {
        get {
            return false;
        }
    }

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值