2010-12-30 8 views
1

Ich versuche, neu zu ordnen von hier aus der Liste zu verschieben zu verwenden: http://www.utdallas.edu/~jrb048000/ListReorder/jQuery Mit einer Liste

Ich habe an Ort und Stelle alle Skripte bekam und meine Ereignisse feuern richtig auf Ziehen/Fallenlassen, aber ich Ich kann nichts in meinem Objekt sehen.

Ziel ist es, die Liste neu anzuordnen und den neuen Auftrag in der DB zu speichern. Ich nehme an, dass etwas mit meiner Syntax in lists.bind nicht stimmt, da es die tatsächlichen Elemente in der Liste anzeigt, aber die Werte leer sind.

  $(document).ready(function() { 
      var options = { 
       itemHoverClass: 'itemHover', 
       dragTargetClass: 'dragTarget', 
       dropTargetClass: 'dropTarget', 
       useDefaultDragHandle: true 
      }; 

      var lists = $('.lists').ListReorder(options); 
      var items = []; 
      lists.bind('listorderchanged', function (evt, jqList, listOrder) { 
       for (var i = 0; i < listOrder.length; i++) { 
        items[i] = $("ul li:eq(" + i + ")").attr('id'); 
       } 
      }); 

      $('#btnSave').click(function() { 
       if (items.length > 0) { 
        var jsonText = JSON.stringify({ items: items }); 
        $.ajax({ 
         type: "POST", 
         url: 'ManageSliders.aspx/SaveReOrder', 
         data: jsonText, 
         contentType: "application/json; charset=utf-8", 
         dataType: "json", 
         success: function() { $("#result").html("New order saved successfully"); }, 
         failure: function (msg) { alert(msg); } 
        }); 
       } 
       else { 
        alert("You have made no changes"); 
       } 
      }); 
     }); 

Ich verbinde eine Listview mit C# und das zeigt sich auch gut.

<ul class="lists"> 
     <asp:ListView ID="lvSliders" runat="server"> 
      <LayoutTemplate> 
       <asp:Panel ID="itemPlaceHolder" runat="server" /> 
      </LayoutTemplate> 
      <ItemTemplate> 
       <li id='<%# DataBinder.Eval(Container.DataItem, "Id")%>'> 
        <%# DataBinder.Eval(Container.DataItem, "Title")%></li> 
      </ItemTemplate> 
      <ItemSeparatorTemplate> 
      </ItemSeparatorTemplate> 
     </asp:ListView> 
    </ul> 

Ich lief es durch Fiedler, und es wirft mir diesen Fehler:

{ "message": "Kann nicht Objekt vom Typ \ u0027System.String \ u0027 konvertieren \ u0027System.Collections.Generic eingeben .List 1[System.String]\u0027","StackTrace":" at System.Web.Script.Serialization.ObjectConverter.ConvertObjectToTypeInternal(Object o, Type type, JavaScriptSerializer serializer, Boolean throwOnError, Object& convertedObject)\r\n at System.Web.Script.Serialization.ObjectConverter.ConvertObjectToTypeMain(Object o, Type type, JavaScriptSerializer serializer, Boolean throwOnError, Object& convertedObject)\r\n at System.Web.Script.Services.WebServiceMethodData.StrongTypeParameters(IDictionary 2 rawParams) \ r \ n bei System.Web.Script.Services.WebServiceMethodData.CallMethodFromRawParams (Objektziel, IDictionary 2 parameters)\r\n at System.Web.Script.Services.RestHandler.InvokeMethod(HttpContext context, WebServiceMethodData methodData, IDictionary 2 rawParams) \ r \ n bei System.Web.Script.Services.RestHandler.ExecuteWebServiceCall (HttpContext-Kontext , WebServiceMethodData methodData) "," ExceptionType ":" System.InvalidOperationException "}

+0

Nun, es scheint, dass es richtig durch die Listenelemente ist Looping, es zurückkehrt gerade nicht eine ID. Ich kann nicht herausfinden, was mit meiner Syntax nicht stimmt. – PixelMuse

Antwort

Verwandte Themen