Model:-public class PurchaseOrder{public string PlanedDate { get; set; }public DateTime? PlanedDateTime { get; set; }public string PlanedDateString { get; set; }public string CompletionDate { get; set; } [Display(Name = "Completion Date")] public DateTime? CompletionDateTime { get; set; } public string CompletionDateString { get; set; }}Controller:-private void ModifyFilters(IEnumerable<IFilterDescriptor> filters) { if (filters.Any()) { foreach (var filter in filters) { var descriptor = filter as FilterDescriptor; if (descriptor != null && (descriptor.Member == "PlanedDateTime" || descriptor.Member == "ModifiedDateTime" || descriptor.Member == "CompletionDateTime" || descriptor.Member == "CharterDateTime" || descriptor.Member == "UpLiftDateTime" || descriptor.Member == "PurchaseOrderDateTime" || descriptor.Member == "InvoiceSubmittedDateTime")) { descriptor.Value = Convert.ToDateTime(descriptor.Value.ToString().Trim()).ToShortDateString(); //Not Equal Op We send Only Date } if (descriptor != null && descriptor.Member == "PlanedDateTime") { descriptor.Member = "PlanedDate"; } else if (filter is CompositeFilterDescriptor) { ModifyFilters(((CompositeFilterDescriptor)filter).FilterDescriptors); } } } }
Controller:- public ActionResult PurchaseCellarOrder_Read([DataSourceRequest] DataSourceRequest request, FormCollection formcol) { XrmServiceContext xrm = new XrmServiceContext(CrmService.Service); var totalRecordCount = 0; Guid ParentCustomerId = xrm.ContactSet.SingleOrDefault(i => i.Id == new Guid(HttpContext.User.Identity.Name)).ParentCustomerId != null ? xrm.ContactSet.SingleOrDefault(i => i.Id == new Guid(HttpContext.User.Identity.Name)).ParentCustomerId.Id : Guid.Empty; List<PurchaseOrderModel> purchaseOrderList = new List<PurchaseOrderModel>(); if (ParentCustomerId != Guid.Empty) { ModifyFilters(request.Filters); po.PlanedDate = entity.Attributes.Contains("tcrmb_planneddate") ? (TimeZoneInfo.ConvertTimeFromUtc(Convert.ToDateTime(entity.Attributes["tcrmb_planneddate"].ToString()), timezone)).ToShortDateString().Trim() : "--"; po.PlanedDateTime = entity.Attributes.Contains("tcrmb_planneddate") ? (TimeZoneInfo.ConvertTimeFromUtc(Convert.ToDateTime(entity.Attributes["tcrmb_planneddate"].ToString()), timezone)).Date : (DateTime?)null; po.PlanedDateString = entity.Attributes.Contains("tcrmb_planneddate") ? entity.FormattedValues["tcrmb_planneddate"] : "--"; purchaseOrderList.Add(po); } var page = request.Page; request.Page = 1; var result = purchaseOrderList.ToDataSourceResult(request); if (totalRecordCount <= request.PageSize) { result.Total = purchaseOrderList.Count; } else { result.Total = totalRecordCount; } return Json(result);}View:-@model SupplierPortal.Models.PurchaseOrderModel@using Kendo.Mvc.UI@(Html.Kendo().Grid<SupplierPortal.Models.PurchaseOrderModel>().Name("PurchaseCellarOrders") .DataSource(ds => ds.Ajax() .Read(r => r.Action("PurchaseCellarOrder_Read", "PurchaseOrder")) .Model(m => m.Id(p => p.PurchaseOrderId)) .ServerOperation(true) .Sort(sort => sort.Add(po=>po.ModifiedDateTime).Descending()) .PageSize(50).Events(e => e.RequestEnd("requestEnd")) ) .Columns(cols => { cols.Bound(con => con.PurchaseOrderId).Title("<input type='checkbox' id='checkAll'/>").Filterable(false).Sortable(false) .ClientTemplate("<input type='checkbox' #=PurchaseOrderId ? checked='':'' # class='check-box' onchange='SetCheckBOX(this)'/>"); cols.Bound(con => con.PHCNumber).Title("PHC"); cols.Bound(con => con.PubName); cols.Bound(con => con.PostCode); cols.Bound(con => con.CaseNumber).Visible(false); cols.Bound(con => con.PONumber).Title("Purchase Order Number"); cols.Bound(con => con.CharterDate).Format("{0:dd/MM/yyyy}").Visible(false); cols.Bound(con => con.CharterDateTime).ClientTemplate("#=CharterDateString #"); cols.Bound(con => con.PlanedDate).Format("{0:dd/MM/yyyy}").Visible(false); cols.Bound(con => con.PlanedDateTime).ClientTemplate("#=PlanedDateString #").Title("Planned Date"); cols.Bound(con => con.CompletionDate).Format("{0:dd/MM/yyyy}").Visible(false); cols.Bound(con => con.CompletionDateTime).Title("Work Done Date").ClientTemplate("#=CompletionDateString #"); cols.Bound(con => con.Status).Filterable(false).Sortable(false).Visible(false); cols.Bound(con => con.StatusReason).Sortable(false).Title("Status Reason"); cols.Bound(con => con.Classification).Width(120); cols.Bound(con => con.ModifiedDate).Format("{0:dd/MM/yyyy}").Visible(false); cols.Bound(con => con.ModifiedDateTime).ClientTemplate("#=ModifiedDateString #"); cols.Bound(con => con.InvoiceSubmittedDate).Format("{0:dd/MM/yyyy}").Visible(false); cols.Bound(con => con.InvoiceSubmittedDateTime).Title("Invoice Submitted").ClientTemplate("#=InvoiceSubmittedDateString #"); cols.Bound(con => con.OnHold); cols.Bound(con => con.OnHoldBool).Visible(false); //cols.Bound(con => con.PONumber); }) .Selectable(selectable => selectable.Mode(GridSelectionMode.Multiple).Type(GridSelectionType.Row)) //.Events(events => events.DataBound("onDataBound")) .Pageable() .Sortable() .Filterable() )
here I got Filter Binding issues...when Give 28/05/2014 in Planned Date 28/05/2015 "On or Before" in Controller Side I got Full record But it Excute the Following line
var result = purchaseOrderList.ToDataSourceResult(request);
Some Of the Records are missing ....I unable to find where the ..issues
I attach Following image First one is webportal one...in this we missing 2 records of planned date 08/05/2015 and 07/05/2015 but it exist in Controller At the time of binding...It Show in second image .....help me here ...where is the issues.