2010-06-30 72 views
3

我一直在這個網站上搜索和谷歌搜索了一會兒,我無法找到一個很好的解決方案,我的問題。我希望能夠保存我的jQuery Portlet在頁面上的狀態。如果我能避免它,我寧願沒有「保存狀態」按鈕。序列化jquery排序

反正,我只是從他們的portlet例子複製的jQuery代碼:

$(function() { 
    $(".column").sortable({ 
     connectWith: '.column' 
    }); 

    $(".portlet").addClass("ui-widget ui-widget-content ui-helper-clearfix ui-corner-all") 
     .find(".portlet-header") 
      .addClass("ui-widget-header ui-corner-all") 
      .prepend('<span class="ui-icon ui-icon-minusthick"></span>') 
      .end() 
     .find(".portlet-content"); 

    $(".portlet-header .ui-icon").click(function() { 
     $(this).toggleClass("ui-icon-minusthick").toggleClass("ui-icon-plusthick"); 
     $(this).parents(".portlet:first").find(".portlet-content").toggle(); 
    }); 

    $(".column").disableSelection(); 
}); 

我曾嘗試加入$(".column").serialize()$(".column").sortable('serialize')和上面一樣,但使用$(".portlet"),而不是...我創建了一個變量,將其設置爲serialize方法的值,但不返回任何內容。我究竟做錯了什麼?

編輯:這是一個內部門戶列代碼:

<div class="column" id="column_1"> 

<div class="portlet" id="portlet_1"> 

<div class="portlet-header">Times</div> 
&nbsp Longest: 
<div class="portlet-content"> 

<ChartFXGauge:DigitalPanel ID="LongestTimePanel" runat="server" > 
</ChartFXGauge:DigitalPanel> 
<p> 
<a href="LongestORTime.aspx">(BySurgeon)</a> 
</p> 
</div> 
</div> 
</div> 
+0

你可以在jsfiddle或jsbin上顯示標記還是更好地重新創建它 – redsquare 2010-06-30 20:07:30

+0

爲portlet添加標記 – 2010-06-30 20:38:13

回答

3

我結束了這段代碼解決:

$(".column").each(function() { 
alert($(this).sortable("toArray")); 
}); 

哪個序列化每列而不是隻有第一列。

+0

我無法獲得「可序列化」的工作,所以我使用了「toArray」,並將結果傳遞給我的控制器。好極了! – MrBoJangles 2010-08-25 19:40:30

0

做你的portlet有一個ID屬性?

docs

如果序列化返回一個空字符串, 確保ID屬性包括 強調

+0

是的,我看到了。在添加帶下劃線的ID後,它只返回[object Object]。 – 2010-06-30 19:58:06

+0

你在IE中調試嗎?你應該使用firebug來使用firefox,然後將輸出寫入控制檯,如下所示:console。日誌(輸出); 它會給你一個更好的看看你到底回來了什麼。 – 2010-07-11 16:57:53

2

要使用的排序的.toArray()函數。

從jQuery排序文檔:

指定者

簽名: .sortable( 「指定者」)

序列化可排序的項目ID的 成字符串的數組。如果你有

<ul id="a_sortable"><br> 
<li id="hello">Hello</li><br> 
<li id="goodbye">Good bye</li><br> 
</ul> 

,做

var result = $('#a_sortable').sortable('toArray'); 

然後

結果[0]將包含 「你好」 和 結果[1]將包含 「再見」。

所以能夠節省的狀態,你就必須有某種形式的Ajax調用用於調用.sortable(「指定者」)的變化選項,你就會有一個很好的陣列的ID的順序。