簡體   English   中英

嘗試使用此jQuery對轉發器行進行排序

[英]Trying to sort repeater rows with this jQuery

我正在嘗試使用此jquery對轉發器行進行排序。 但是我無法保存排序項。 請幫我 。 如何在數據庫以及.aspx頁中保存排序?預先感謝您

<script language="javascript" type="text/javascript">
$("#defaultList").sortable(); 

$(document).ready(function () {


    $("#defaultList").sortable(

    {
        update: function (ev, ui) {

            var result = $('#defaultList').sortable('toArray');
            updateSequenceNumber(result);
        }

    }


);

});


function updateSequenceNumber(items) {

    var originalIdAndSequenceNumber = '';
    var index = 0;

    for (i = 0; i <= items.length - 1; i++) {

        if (items[i].length == 0)
            continue;

        var item = $('#' + items[i])[0];

        originalIdAndSequenceNumber += item.attributes["originalId"].nodeValue + ":" + index.toString();
        originalIdAndSequenceNumber += "|";
        index = index + 1;
    }

    persistPositionUsingAjax(originalIdAndSequenceNumber);

}

function persistPositionUsingAjax(originalIdAndSequenceNumber) {

    $.ajax(

    {
        type: "POST",
        dataType: "text",
        url: "AjaxService.asmx/UpdateSequenceNumber",
        data: "s=" + originalIdAndSequenceNumber,
        success: function (response) {

        }
    }

    );

}

我的ajax方法:

[WebMethod]
public string UpdateSequenceNumber(string s)
{
    s = s.TrimEnd('|');
    string updateQuery = @"update dnn_Table_1 set SortId = {0}
        where ImageId = {1}";
    StringBuilder sb = new StringBuilder();

    string[] originalIdAndSeqNumberArray = s.Split('|');

    foreach (var originalIdAndSeqNumberCombined in originalIdAndSeqNumberArray)
    {
        var tempArray = originalIdAndSeqNumberCombined.Split(':');
        int originalId = Convert.ToInt32(tempArray[0]);
        int sequenceNumber = Convert.ToInt32(tempArray[1]);

        sb.Append(String.Format(updateQuery, sequenceNumber, originalId));
        sb.Append(System.Environment.NewLine);
    }

    UpdateInDatabase(sb.ToString());

    return "Hello World";
}

private void UpdateInDatabase(string updateQuery)
{
    SqlDataProvider sqd = new SqlDataProvider();
    string ConnectionString = sqd.ConnectionString;
    SqlConnection conn = new SqlConnection(ConnectionString);
    SqlCommand command = new SqlCommand(updateQuery, conn);
    command.CommandText = updateQuery;

    conn.Open();
    command.ExecuteNonQuery();

    conn.Close();
}

Ajax調用返回什么狀態碼?

對我來說,它看起來像是500。您正在構建一條更新語句,經過幾次迭代后,看起來像這樣

update dnn_Table_1 set SortId = 3 where ImageId = 2update dnn_Table_1 set SortId = 2 where ImageId = 4update dnn_Table_1 set SortId = 7 where ImageId = 6

那只是行不通的。 嘗試以其他方式構造SQL更新,或將UpdateInDatabase移到foreach循環中。

我可能沒有發現其他問題,但這可能是一個起點。

希望能有所幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM