c# - Issue with serverside filtering datetime kendo ui -


i have problem serverside filtering of datetimes datasourcerequest..

i have grid in showprocesses.cshtml. construct kendo ui grid through javascript. turned serverfiltering , serversorting on. looks (i kicked don't need see/know):

        $("#processgrid").kendogrid({             sortable: true,             pageable: true,             selectable: true,             filterable: {                 extra: false             },             datasource: {                 type: "aspnetmvc-ajax",                 transport: {                     read: {                         url: "/home/getprocesses",                         cache: false,                         type: "post",                         datatype: "json"                     },                     parametermap: function (data) {                         return $.extend({}, data, { sort: data.sort, filter: data.filter });                     }                 },                 serverpaging: true,                 serverfiltering: true,                 serversorting: true,                 page: "@viewbag.processpage",                 schema: { data: "data", total: "total", model: { id: "id" } },                 pagesize: "@(@model.maxcounttoshow)"             },             columns: [                 { field: "errordatetime", title: "processdatetime", width: "170px"/*, filterable: { ui: datefilter }*/ },                 { field: "name", title: "processtype", attributes: { value: "type" }, width: "240px;", filterable: { ui: processtypefilter} },                 { field: "service", title: "service", width: "181px;", filterable: { ui: servicefilter } },                 { field: "operation", title: "operation", width: "130px", filterable: { ui: operationfilter } }             ]         }).data("kendogrid"); 

one column of kendo ui grid contains datetimes (title: processdatetime, field: errordatetime). column can filtered. /home/getprocesses looks this:

    public jsonresult getprocesses([datasourcerequest] datasourcerequest request)     {       var result = homemodel.homemodelgrid.todatasourceresult(request, p => new         {             id = p.id,             processdatetime = p.processdatetime != null ? p.processdatetime.tostring() : "",             state = p.state,             statedetails = p.statedetails != null ? p.statedetails : "",             name = p.name,             service = p.service,             operation = p.operation,             errordatetime = p.state == "successful" || p.state == "info" || p.state == "warning" ? (p.processdatetime != null ? p.processdatetime.tostring() : "") : p.errordatetime.tostring()          });          return new jsonresult { data = result, jsonrequestbehavior = jsonrequestbehavior.allowget, maxjsonlength = int32.maxvalue };     } 

the datasourcerequest request contains filters, sorts, data, page, pagesize, etc. filters either of type filterdescriptor or compositefilterdescriptor. homemodelgrid view contains columns used create result.

if try filter processdatetime column (you enter date in textbox), following error: an exception of type 'system.argumentexception' occurred in kendo.mvc.dll not handled in user code; additional information: provided expression should have string type

i read post 1 guy suggested set membertype of filterdescriptor string. tried , got error: an exception of type 'system.invalidoperationexception' occurred in system.core.dll not handled in user code; additional information: no coercion operator defined between types 'system.datetime' , 'system.string'.

so, tried convert string datetime. therefore, set membertype of filterdescriptor datetime , got following error: an exception of type 'system.argumentexception' occurred in kendo.mvc.dll not handled in user code; additional information: provided expression should have string type

as read this, looked value filterdescriptor using filtering. string. changed value of filterdescriptor datetime , got error: an exception of type 'system.argumentexception' occurred in kendo.mvc.dll not handled in user code; additional information: provided expression should have string type

i got 1 before.. don't know do.

the filterdescriptor looks after changing membertype , converting string datetime:

filterdescriptor:    convertedvalue: {03.11.2014 00:00:00}   member:  "errordatetime"   membertype: {name="datetime" fullname="system.datetime"}   operator: startswith   value: {03.11.2014 00:00:00} 

before, looked this:

filterdescriptor:    convertedvalue: "3.11.2014"   member:  "errordatetime"   membertype: null   operator: "startswith"   value: "3.11.2014" 

i don't know how can make work. appreciate insights. , ciao

i found solution problem.

i added function data of ajax call. there, iterate on filters , fetch 1 contains date. change value can use in controller. either can use :

kendo.tostring(new date(filters[m].value), "dd.mm.yyyy") 

or:

//this in *data: function(){}* of ajax call var newout = reformdate(filters[m].value.tostring());  //function formats date function reformdate(input){     var year = input.slice(-4),         month = ['jan','feb','mar','apr','may','jun',                  'jul','aug','sep','oct','nov','dec'].indexof(input.substr(4,3))+1,        day = input.substr(8,2);      var output = (day<10?'0':'') + day.trim() + '.'                     + (month<10?'0':'') + month + '.' + year;     return output; } 

the string has format : dd.mm.yyyy

in controller, can convert date , use filter model


Comments

Popular posts from this blog

java - Oracle EBS .ClassNotFoundException: oracle.apps.fnd.formsClient.FormsLauncher.class ERROR -

c# - how to use buttonedit in devexpress gridcontrol -

nvd3.js - angularjs-nvd3-directives setting color in legend as well as in chart elements -