2012-03-20 44 views
0

我正在尝试使用此jquery对中继器行进行排序。但我无法保存排序项目。请帮帮我 。如何保存数据库以及在.aspx页面中排序预先感谢您尝试使用此jQuery对中继器行进行排序

<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(); 
} 

回答

1

什么状态代码执行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循环中。

可能还有其他问题,我没有发现,但这可能是一个起点。

希望帮助

+0

http://highoncoding.com/Articles/513_Pimp_Up_List_Sorting_Using_JQuery.aspx。我参考这个网站。请帮帮我。 – user1240045 2012-03-20 08:33:03

+0

doh我没有看到sb.Append(System.Environment.NewLine);位,我在想MySql。 刚刚阅读你提到的文章。看起来应该可以工作,但是ajax代码的实际响应是什么?用萤火虫或小提琴或类似的东西检查。也许你的连接有问题。 – 2012-03-20 08:44:39

+0

您声明#defaultList可排序两次。删除第一个。另外,在ajax成功函数中,输入alert(response); – 2012-03-20 08:54:50

相关问题