2010-07-29 68 views
2

我過去使用過Telerik RadDock,儘管它很不錯,但它有點笨重和臃腫。一個很好的功能是能夠將頁面狀態(所有碼頭位置等)保存在數據庫中,並在以後恢復它們。ASP.NET MVC&JQuery UI拖放 - 有誰知道如何存儲/取消面板狀態?

我想知道是否有一種方法在MVC和jQuery中保存jQuery UI Drag Drop面板的狀態。基本上,每個用戶都可以編輯他們自己的「儀表板」,並將項目放在任何他們想要的地方,並且狀態將被保存到SQL Server下的配置文件中以供以後重新使用。

在此先感謝

回答

1

我覺得Peol一般是正確的。在這種情況下模擬Telerik RadControl行爲的唯一方法是手動跟蹤和持久化對Panel佈局的更改。具體而言,面板,您可能會想:

  1. 處理的dragStop事件
  2. 在這種情況下,獲取當前位置/大小/偏移信息當前面板
  3. 堅持新的位置 - 無論是本地隱藏輸入或通過網絡服務

如果您在本地隱藏字段,則可以長期保留在下一頁POST或通過單個服務調用(例如)用戶單擊「保存」按鈕。

Telerik RadDock通過將其狀態序列化爲XML來簡化進程,這使得它易於保存和加載,但我認爲jQuery面板不提供相同的功能。也許這將在未來添加到Telerik Extensions for MVC ...

1

我們最近解決了類似的問題(在非MVC項目雖然)通過簡單地增加與小部件ID的HTML5數據屬性,通過所有的李的循環,並檢索其ID和推他們到一個數組。例如: -

HTML結構:

<ul> 
    <li data-id="1"></li> 
    <li data-id="2"></li> 
    <li data-id="3"></li> 
    <li data-id="4"></li> 
    <li data-id="5"></li> 
    <li data-id="6"></li> 
</ul> 

的jQuery(停止回調內部):

var widgets = []; 

$('li')​​​​.each(function() { 
    widgets.push(this.getAttribute("data-id")); 
}); 

WebService.UpdatePositions(widgets); 

我們在sortable這樣做的stop回調,而應適用在這裏。

的WebService然後接收int[],你知道將使用int[]指數它們是包含ID在它們的新位置。