リスト内のデータの上下移動

14540 ワード

aspxページコード:
<%#(Convert.ToInt32(Eval("sortindex")) == nMaxIndex) ? "" : "<td class='wenzi'>

<a href='#' onclick=\"sortInformation(" + Eval("fid") + "," + ",'up'," + Eval("sortindex") + ")\"> </a></td>"%>



<%#(Convert.ToInt32(Eval("sortindex")) == nMinIndex) ? "" : "<td class='wenzi'>

<a href='#' onclick=\"sortInformation(" + Eval("fid") + "," + ",'down'," + Eval("sortindex") + ")\"> </a></td>"%>

上記の3元式は、リストの最初のデータである場合、上へリンクがなく、リストの最後のデータである場合、下へリンクがないことを保証する.
 
aspx.csファイルコード:
protected int nMaxIndex = FooterBLL.GetMaxIndex();  //  protected int nMinIndex = FooterBLL.GetMinIndex();  // 

  
JSファイルコード:
// 

function sortInformation(keyID,optype,sortindex) {

    if (keyID <= 0) {

        alert(" ID , 。");

        return;

    }

    if (sortindex <= 0) {

        alert(" , 。");

        return;

    }

    if (optype != ‘up’ && optype != 'down') {

        alert(" , 。");

        return;

    }



    $.ajax({

        type: 'POST',

        url: 'UserControl/SetInfoSort.ashx',

        data: {

            KeyID: keyID,

            SortIndex: sortindex,

            OpType: optype

        },

        success: function (res) {

            if (res == 1) {

                window.location.reload();

            } else {

                alert(" , 。");

            }

        },

        error: function () {

            alert(" , 。");

        }

    });

}

 
 
ashxファイルコード:
public class SetInfoSort : IHttpHandler {

    

    public void ProcessRequest (HttpContext context) {

        context.Response.ContentType = "text/plain";



        string strRescult = "0";   //1:  0: 



        string strKeyID = context.Request.Form["KeyID"];

        int nKeyID = 0;

        if (!int.TryParse(strKeyID, out nKeyID) || nKeyID <= 0)

        {

            context.Response.Write(strRescult);

            return;

        }



        string strSortIndex = context.Request.Form["SortIndex"];

        int nSortIndex = 0;

        if (!int.TryParse(strSortIndex, out nSortIndex) || nSortIndex <= 0)

        {

            context.Response.Write(strRescult);

            return;

        }



        string strCateID = context.Request.Form["CateID"];

        int nCateID = 0;

        if (!int.TryParse(strCateID, out nCateID) || nCateID <= 0)

        {

            context.Response.Write(strRescult);

            return;

        }



        string strOpType = context.Request.Form["OpType"];
     if(strOpType != "up" && strOpType != "down") { context.Response.Write(strRescult); return; } if (InformationBLL.SetInformationSort(nKeyID,nSortIndex,nOpType)) strRescult = "1"; context.Response.Write(strRescult); } public bool IsReusable { get { return false; } } }

 
 
SQLストレージ・プロシージャ:
ALTER PROCEDURE [dbo].[Footer_Sort] 

    @UPKEYID    INT, --

    @DOWNKEYID  INT, --



    @RESCULT    INT OUTPUT   --1:  0: 

AS

BEGIN

    SET @RESCULT = 0



    BEGIN TRAN T

        DECLARE @TEMPUP INT

        DECLARE @TEMPDOWN INT

        SELECT @TEMPUP = SORTINDEX FROM FOOTER WHERE FID = @UPKEYID

        SELECT @TEMPDOWN = SORTINDEX FROM FOOTER WHERE FID = @DOWNKEYID



        UPDATE FOOTER SET SORTINDEX = @TEMPDOWN WHERE FID = @UPKEYID

            IF(@@ERROR <> 0)

            BEGIN

                ROLLBACK TRAN T

            END



        UPDATE FOOTER SET SORTINDEX = @TEMPUP WHERE FID = @DOWNKEYID

            IF(@@ERROR <> 0)

            BEGIN

                ROLLBACK TRAN T

            END

        SET @RESCULT = 1

    COMMIT TRAN T



END