2011-07-26 78 views
1

我有一個電影表和由C#構建的簡單CMS管理的演員表。用戶需要調整電影頁面列表中演員的順序。我認爲jquery可排序會爲此提供一個非常好的UI,並且我可以很好地在gridview上實現它。代碼如下:使用jQuery可排序來管理數據庫中的列表順序?

<script type="text/javascript"> 
    $(function() { 
     $('table').filter(function() { 
      return $('tr', this).length > 2; 
     }) 
     .sortable({ 
      items: 'tr:not(:first)', 
      axis: 'y', 
      scroll: true    
     }).disableSelection(); 
    }); 
</script> 

我也能搶到使用代碼有人拖動項目的新位置在網站上共享如下:

stop: function (event, ui) { 
     alert("New position: " + ui.item.index()); 
     var x1 = ui.item.index(); 
    } 

這第二個片段是隻是爲了證明我可以讀新的職位,但對我需要做的事沒有用。

actors表具有包含actorID,movieID和order的相關字段的行。當在UI中重新排序參與者時,我需要將新訂單值寫回數據庫。這就是我質疑做到這一點的最佳方式。

1)排序窗口小部件是否是管理數據庫中數據的首選合理選擇?

2)如果是這樣,那麼寫入udpated值的智能方法是什麼?性能並不是至關重要的,因爲最多隻有少數用戶,但列表中可能有近100個項目,儘管有可能在任何時候只重新排列一個或兩個項目。

回答

1

1)我有一個頁面,我做了類似的jQuery表格拖動&下拉插件。用戶通過拖動行來對錶格進行排序,然後我們保存該順序(它在PDF報告等中使用)。如果UI爲你的目的而工作,那麼使用可排序來完成這一點是完全合理的。 :)

2)最簡單的方法是,無論何時您改變排序順序,都會遍歷整個列表並構建一個Ids和訂單數組(或者甚至只是按順序排列的Ids)。然後,您將使用jQuery ajax()命令將該數組發送回服務器。

在服務器上,你有一個控制器動作,期望一個int數組(或任何你傳回)。然後,您可以將該訂單保存到服務器。這部分只是標準的服務器代碼,所以它很容易。

我想給你一些示例代碼,但我現在沒有時間不幸。 :(儘管使用jQuery進行ajax調用非常容易,並且有很多示例。:)

+0

這聽起來像它會正常工作。我可以處理服務器端代碼,但是如果您可以告訴我如何在JavaScript中構建ID數組並將其發回,那將是完美的。 – nycdan

相關問題