2013-02-21 83 views
1

在我的CS的網頁我有下面的代碼的jqGrid排序MVC3

public JsonResult DynamicGridData(string sidx, string sord, int page, int rows) 
    { 

     Employee _emp = new Employee(); 

     List<Employee> _lstemp = _emp.GetallEmp(); 
     int pageIndex = Convert.ToInt32(page) - 1; 
     int pageSize = rows; 
     int totalRecords = _lstemp.Count(); 
     int totalPages = (int)Math.Ceiling((float)totalRecords/(float)pageSize); 


     var jsonData = new 
     { 
      total = totalPages, 
      page, 
      records = totalRecords, 
      rows = (
       from emp in _lstemp 
       select new 
       { 
        i = emp.ID, 
        cell = new string[] { emp.ID.ToString(), emp.FirstName.ToString(), emp.LastName.ToString(),emp.Age.ToString(),emp.State.ToString(),emp.Country.ToString() } 
       }).ToArray() 
     }; 
     return Json(jsonData); 
    } 

我的模型

 public class Employee 
{ 
    public int ID { get; set; } 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
    public int Age { get; set; } 
    public string State { get; set; } 
    public string Country { get; set; } 

    public List<Employee> GetallEmp() 
    { 
     List<Employee> list = new List<Employee>() 
     { 
      new Employee{ID=1,FirstName="Asish",LastName="Nehra",Age=25,State="A",Country="India"}, 
      new Employee{ID=2,FirstName="Nsish",LastName="Oehra",Age=35,State="B",Country="Sri Lanka"}, 
      new Employee{ID=3,FirstName="Psish",LastName="Lehra",Age=26,State="C",Country="Bangladesh"}, 
      new Employee{ID=4,FirstName="Jsish",LastName="Hehra",Age=25,State="D",Country="Australia"}, 
      new Employee{ID=5,FirstName="Usish",LastName="Tehra",Age=85,State="E",Country="Kenya"}, 
      new Employee{ID=6,FirstName="Rsish",LastName="Lehra",Age=15,State="F",Country="India"}, 
      new Employee{ID=7,FirstName="Isish",LastName="Eehra",Age=5,State="G",Country="Pakistan"}, 
      new Employee{ID=8,FirstName="Asish",LastName="Nehra",Age=25,State="A",Country="India"}, 
      new Employee{ID=9,FirstName="Nsish",LastName="Oehra",Age=35,State="B",Country="Sri Lanka"}, 
      new Employee{ID=10,FirstName="Psish",LastName="Lehra",Age=26,State="C",Country="Bangladesh"}, 
      new Employee{ID=11,FirstName="Jsish",LastName="Hehra",Age=25,State="D",Country="Australia"}, 
      new Employee{ID=12,FirstName="Usish",LastName="Tehra",Age=85,State="E",Country="Kenya"}, 
      new Employee{ID=13,FirstName="Rsish",LastName="Lehra",Age=15,State="F",Country="India"}, 
      new Employee{ID=14,FirstName="Isish",LastName="Eehra",Age=5,State="G",Country="Pakistan"}, 
      new Employee{ID=15,FirstName="Asish",LastName="Nehra",Age=25,State="A",Country="India"}, 
      new Employee{ID=16,FirstName="Nsish",LastName="Oehra",Age=35,State="B",Country="Sri Lanka"}, 
      new Employee{ID=17,FirstName="Psish",LastName="Lehra",Age=26,State="C",Country="Bangladesh"}, 
      new Employee{ID=18,FirstName="Jsish",LastName="Hehra",Age=25,State="D",Country="Australia"}, 
      new Employee{ID=19,FirstName="Usish",LastName="Tehra",Age=85,State="E",Country="Kenya"}, 
      new Employee{ID=20,FirstName="Rsish",LastName="Lehra",Age=15,State="F",Country="India"}, 
      new Employee{ID=21,FirstName="Isish",LastName="Eehra",Age=5,State="G",Country="Pakistan"}, 

     }; 
     return list; 
    } 
} 

在我CSHTML頁

<script type="text/javascript"> 
jQuery(document).ready(function() { 

    jQuery("#list").jqGrid({ 
     url: '/Home/DynamicGridData/', 
     datatype: 'json', 
     mtype: 'POST', 
     colNames: ['ID', 'FirstName', 'LastName', 'Age', 'State', 'Country'], 
     colModel: [ 
    { name: 'ID', index: 'ID', width: 40, align: 'left' }, 
    { name: 'FirstName', index: 'FirstName', width: 80, align: 'left' }, 
    { name: 'LastName', index: 'LastName', width: 80, align: 'left' }, 
    { name: 'Age', index: 'Age', width: 80, align: 'left' }, 
    { name: 'State', index: 'State', width: 80, align: 'left' }, 
    { name: 'Country', index: 'Country', width: 80, align: 'left' }], 
     pager: jQuery('#pager'), 
     rowNum: 10, 
     rowList: [10, 20, 30], 
     sortname: 'ID, FirstName, LastName, Age, State, Country', 
     sortorder: "Asc", 
     viewrecords: true, 
     imgpath: '/content/images', 
     autowidth: true, 
     width: '100%', 
     height: '100%', 
     multiselect: false, 
     caption: "Grid example", 
     loadComplete: function() { 
     //jQuery("#myGridID").trigger("reloadGrid"); // Call to fix client-side sorting 
    } 
    }); 

    //jQuery("#list").jqGrid('navGrid', '#pager', { add: true, edit: true, del: true }); 
    jQuery("#list").jqGrid('navGrid', '#pager', { edit: false, add: false, del: false }, {}, {}, {}, { multipleSearch: true, multipleGroup: true, showQuery: true }); 


}); 
</script> 

我怎麼可以排序的所有列。 。我只想通過排序對我的所有字段進行排序:對所有字段都是true

編輯<script>不正確格式化

回答

1

在你的控制器,你需要使用一個OrderBy,然後通過網格使用傳遞給控制器​​的sidx, sord值。我還在下面的示例中包含分頁,以便您的網格只能顯示數據集中的一行行。

List pagedQuery = _lstemp.AsQueryable().OrderBy(sidx + " " + sord).Skip((page - 1) * rows).Take(rows); 

在你colModel(jqGrid的設置),你會設置你想要排序與

sortable: false,sortable: true

如果你想要一個性能比肩每一列都被排序,你可以使用

$.extend($.jgrid.defaults, {sortable: true}); 

您將能夠檢查您的POST以查看jqGrid告訴控制器哪一列按照以及方向排序。

注意:您將需要System.Linq.Dynamic dll這個特定的OrderBy語法。此DLL是可供選擇:

+0

感謝紀念其工作的罰款... – 2013-03-09 10:00:02

+0

這將需要使用System.Linq.Dynamic的 - https://開頭github.com/kahanu/System.Linq.Dynamic – Matthieu 2013-12-09 19:44:02

+0

@Matthieu是對的。 – Mark 2013-12-10 19:27:20