2016-06-30 10 views
1

私は剣道MVCグリッドを使ってデータを表示しています。私は、ユーザーがクリックしたURLに基​​づいてデータをフィルタリングする必要があります。剣道データソースフィルタが期待通りに機能しない

public ActionResult ApplicationGrid(string ApplicationStatus, string fromDate, string toDate) 
     {    
      ViewBag.ApplicationStatus = ApplicationStatus == null ? "All" : ApplicationStatus; 
      ViewBag.FromDate = fromDate == null ? DateTime.Now.ToShortDateString() : Convert.ToDateTime(fromDate).ToShortDateString(); 
      ViewBag.ToDate = toDate == null ? DateTime.Now.ToShortDateString() : Convert.ToDateTime(toDate).ToShortDateString(); 
      return View(); 
     } 

     public ActionResult FetchData([DataSourceRequest]DataSourceRequest request) 
     { 
      var applicationList = Dbcontext.ApplicationStatus; 
      return Json(applicationList.ToDataSourceResult(request), JsonRequestBehavior.AllowGet); 
     } 

私はStartDateに一つだけのフィルタを続ける場合は、私は両方続ければ、それは正常に動作しますが、下記は剣道グリッドのコード

ビュー

@(Html.Kendo().Grid<WebApplication2.ApplicationViewModel>() 
     .Name("grid") 
     .Columns(columns => 
     { 
      columns.Bound(c => c.ApplicationStatus).Width(150); 
      columns.Bound(c => c.StartDate).Width(150).Filterable(ftb => ftb.Cell(cell => cell.Operator("equals"))); 
      columns.Bound(c => c.EndDate).Width(150).Filterable(ftb => ftb.Cell(cell => cell.Operator("equals"))).Groupable(false);       
     }) 
       .HtmlAttributes(new { style = "height: 500px;width:100%" }) 
       .Groupable() 
     .Scrollable() 
     .Filterable(ftb => ftb.Mode(Kendo.Mvc.UI.GridFilterMode.Row)) // Filter Code 
     .Sortable() 
     .Pageable(pageable => pageable 
     .Refresh(true) 
     .PageSizes(true)) 
     .DataSource(dataSource => dataSource 
     .Ajax() 
     .ServerOperation(true) 
     .Read(read => read.Action("FetchData", "Home")) 
         .Filter(f => f.Add(p => p.ApplicationStatus).IsEqualTo(ViewBag.ApplicationStatus)) 
         .Filter(f => f.Add(p => p.StartDate).IsGreaterThanOrEqualTo(Convert.ToDateTime(ViewBag.FromDate))) 
         .Filter(f => f.Add(p => p.StartDate).IsLessThanOrEqualTo(Convert.ToDateTime(ViewBag.ToDate))) 
     .PageSize(KendoGridConstants.KendoGridDefaultPageSize) 
     ) 
    ) 

コントローラコードがありますフィルターを使用して、関連性の低いデータを表示しています。 日付範囲でフィルタリングする必要があります。他の選択肢も良いです。

答えて

1

私はこれが本当に古くなっていることは知っていますが、私は同じ問題があり、ドキュメンテーションを見つけることができず、いつものようにStack Overflowで終わりました。だから私は私のソリューションに貢献しています。

データソースにフィルター・ステートメントに追加および/または演算子を追加する必要があります。

.Read(read => read.Action("FetchData", "Home")) 
    .Filter(f => f.Add(p => p.StartDate).IsGreaterThanOrEqualTo(Convert.ToDateTime(ViewBag.FromDate))) 
     .And().IsLessThanOrEqualTo(Convert.ToDateTime(ViewBag.ToDate))) 
関連する問題