2014-12-22 110 views
1

是否有任何選項通過拖放jqGrid行排序?我想將訂單保存在數據庫中。我已經檢查了與jqGrid拖動&下降有關的所有現有解決方案。但是,沒有任何工作正常。jqGrid行拖放排序

+0

哪個jqGrid你指的是?這個http://www.trirand.com/blog/或者這個http://jqgrid.com/jqgrid/? – Gouda

回答

1

這是我的方法ASP.NET MVC。但是你應該知道,只有當你沒有尋呼機時,這個容易實現。

主要想法是在您的網格中獲取所有ID並在您的DB中更改item_order

HTML

<table id="jqgTopMenu" cellpadding="0" cellspacing="0"></table> 
<div id="jqgpTopMenu" style="text-align: center;"></div> 

腳本

$('#jqgTopMenu').jqGrid({ 
    url: '@Url.Action("TopMenus")', 
    datatype: 'json', 
    mtype: 'POST', 
    colNames: ['Id', 'ItemOrder', 'Name', 'Short name'], 
    colModel: [ 
       { name: 'Id', index: 'Id', hidden: true }, 
       { name: 'ItemOrder', index: 'ItemOrder', hidden: true }, 
       { name: 'PostName', index: 'PostName', align: 'left', width: 430 }, 
       { name: 'PostNameShort', index: 'PostNameShort', align: 'left', width: 500 }, 
    ], 
}); 
//sort Part 
$('#jqgTopMenu').jqGrid('sortableRows', 
{ 
    update: function (e, ui) { 
     var ids = $("#jqgTopMenu").jqGrid('getDataIDs'); 
     $.ajaxSettings.traditional = true; 
     $.ajax({ 
      url: '@Url.Action("SortTopMenu","Admin")', 
      type: 'post', 
      dataType: 'json', 
      data: { ids: ids }, 
      success: function (data) { 
       $('#jqgTopMenu').trigger("reloadGrid") 
      }, 
      error: function (XMLHttpRequest, textStatus, errorThrown) { 
       console.log("status: " + textStatus + " Error: " + errorThrown); 
      } 
     }); 
    } 
}); 

控制器

[HttpPost] 
public JsonResult SortTopMenu(List<int> ids) 
{ 
    return Json(_dataManager.TopMenu.Sort(ids)); 
} 

Manager DB方法

public bool Sort(List<int> ids) 
{ 
    for (int i = 0; i < ids.Count; i++) 
    { 
     top_menu t = _dataContext.top_menu.FirstOrDefault(tm => tm.id == ids[i]); 
     t.item_order = i; 
     _dataContext.SubmitChanges(); 
    } 
    return true; 
}