2012-03-20 1 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) { 

     } 
    } 

    ); 

} 

мой Аякса метод:

[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 

Это просто не будет работать. Попробуйте eihter построить SQL-обновление по-другому или перенести UpdateInDatabase в цикл foreach.

Могут быть другие проблемы, которые я не заметил, но это может быть отправной точкой.

Надежда, что помогает

+0

http://highoncoding.com/Articles/513_Pimp_Up_List_Sorting_Using_JQuery.aspx. Я ссылаюсь на этот сайт. Пожалуйста, помогите мне. – user1240045

+0

doh Я не видел sb.Append (System.Environment.NewLine); бит, и я думал о MySql. Просто прочитайте статью, которую вы упомянули. Похоже, он должен работать нормально, но каков фактический ответ на код ajax? Проверьте с помощью firebug или fiddler или что-то в этом роде. Возможно, что-то не так с вашей связью. –

+0

Вы объявляете #defaultList как сортируемый дважды. Удалите первый. Кроме того, в функции hte ajax success помещается предупреждение (ответ); –