2013-05-08 51 views
1

我有一个网格:MVCjqGrid。添加日期列

@(Html.Grid("grid") 
     .SetJsonReader(new MvcJqGrid.DataReaders.JsonReader { Id = "Id", RepeatItems = false }) 
     .SetRequestType(RequestType.Post) 
     .AddColumn(new Column("Date").SetWidth(300).SetLabel("Date").) 
     .SetUrl(Url.Action("Action", "Controller")) 
     .SetRowNum(10) 
     .SetHeight(500) 
     .SetRowList(new[] { 10, 15, 20, 50 }) 
     .SetViewRecords(true) 
     .SetGridView(true) 
     .SetPager("pager") 
    ) 

和数据该网格:

[HttpPost] 
public JsonResult Action(GridSettings gridSettings) 
{ 
    var data = new List<DateTime>(); 
    data.AddRange(Enumerable.Range(0, 1000).Select(s => new 
    { 
     Date = DateTime.Now.AddHours(s * 4), 
    })); 
    int totalRecords = data.Count; 
    if (!string.IsNullOrWhiteSpace(gridSettings.SortColumn)) 
    { 
     data = (gridSettings.SortOrder == "asc" ? 
      data.AsQueryable().OrderByPropertyName(gridSettings.SortColumn) : 
      data.AsQueryable().OrderByPropertyNameDescending(gridSettings.SortColumn)).ToArray(); 
    } 
    data = data.Skip((gridSettings.PageIndex - 1) * gridSettings.PageSize).Take(gridSettings.PageSize).ToArray(); 

    var jsonData = new 
    { 
     total = totalRecords/gridSettings.PageSize + 1, 
     page = gridSettings.PageIndex, 
     records = totalRecords, 
     rows = data 
    }; 
    return Json(jsonData); 
} 

所以问题应该怎么处理日期的工作?如果我将它们保留为DateTime,它们将显示为不带格式,但使用时,将不会正确排序?

+1

** [请点击这里](http://stackoverflow.com/a/15463979/2007801)** – 2013-05-08 12:16:31

+0

@ewvfwrwwvw,thx,但是我怎样才能为MVCjqGid调用它? – Roar 2013-05-08 12:26:12

+0

你必须调用Action Method ** [使用这里提到的JQuery](http://stackoverflow.com/a/16245682/2007801)**并成功回调格式化日期。 – 2013-05-08 12:28:50

回答

1

您整理后,您可以格式化数据(我重构你的控制器动作一点点地得到它的工作):

[HttpPost] 
     public JsonResult GetData(GridSettings gridSettings) 
     { 
      var data = Enumerable.Range(0, 1000).Select(s => DateTime.Now.AddHours(s * 4)).ToList(); 

      var totalRecords = data.Count(); 

      if (!string.IsNullOrWhiteSpace(gridSettings.SortColumn)) 
      { 
       data = (gridSettings.SortOrder == "asc" ? 
        data.OrderBy(x=>x) : 
        data.OrderByDescending(x=>x)).ToList(); 
      } 
      data = data.Skip((gridSettings.PageIndex - 1) * gridSettings.PageSize).Take(gridSettings.PageSize).ToList(); 

      var id = (gridSettings.PageIndex - 1) * gridSettings.PageSize; 

      var jsonData = new 
      { 
       total = totalRecords/gridSettings.PageSize + 1, 
       page = gridSettings.PageIndex, 
       records = totalRecords, 
       rows = data.Select(d=>new 
        { 
         id = ++id, 
         Date = d.ToShortDateString() 
        }) 
      }; 
      return Json(jsonData); 
     }