Как да филтрирате мрежа на Telerik Mvc, свързана с форматирано свойство за дата и час

Нов в Telerik Mvc, така че се надявам да пропускам очевидното тук. Използвам версия 2011.3.1115.340 на Telerik Mvc. Мрежата се свързва с данни чрез ajax извиквания към действията на контролера и след това колоните се свързват с публични свойства. Горе-долу толкова шаблонен, колкото можете да получите.

Html.Telerik().Grid<ProductResult>()
    .Name("Grid")
    .DataBinding(databinding => databinding.Ajax()
        .Select("GetProductInfo", "Product"))
    .DataKeys(keys => keys.Add(a => a.ProductId))
    .Columns(columns => {
        columns.Bound(a => a.CreateDate).Width(30);
        columns.Bound(a => a.Sales).Width(30);
    columns.Bound(a => a.Service).Width(30);
    columns.Bound(a => a.Training).Width(30);
    columns.Bound(a => a.ModifiedDate).Width(30);
    })
    .Pageable(p => p.PageSize(30))
    .Sortable()
    .Filterable()
    .Groupable()

Цялото филтриране, освен стойностите на датата, работи добре. Обвързаният клас в крайна сметка се доставя от wcf услуга, където стойностите за дата и час са форматирани в договора за данни

[DataMember]
[DisplayName("Last Modified Date")]
[DisplayFormat(DataFormatString = "{0:d}")]
public virtual DateTime ModifiedDate { get; set; }

Когато използвам вградения мрежов филтър (падащо меню) и въведа стойност за дата, която знам, че съществува в източника на данни и мога да видя в мрежата, не получавам резултати - празна мрежа. Четох публикации, които изглежда показват, че това трябва да работи като чар, но очевидно не в моя случай. Някаква идея какво правя грешно тук?


person NotSoMuchNo    schedule 10.05.2013    source източник


Отговори (2)


Предполагам, че вашето поле за дата „Дата на промяна“ е поле за дата и час. Това се дължи на факта, че филтърът за избор на дата в KendoUI не може да съпостави частта от времето на вашите стойности на DateTime. Тъй като нищо не съвпада точно със стойностите във вашата база данни, то не връща нищо.

Наскоро се борих и с това и най-доброто ми решение беше да прехвърлям полетата DateTime в SQL към дата, когато избирах полетата с моя SPROC. Вашият би изглеждал по следния начин, ако приемем, че използвате SQL.

SELECT CAST(ModifiedDate AS date) AS ModifiedDate FROM YourTable

Това поправи проблема ми с филтъра, тъй като сега връщаше редовете, които исках.

Това разкри друг проблем за мен, тъй като сега всичките ми стойности на датата се компенсираха с минус шест часа, защото хоствахме сайта си на Azure. За да отстраня този проблем, следвах точно това от екипа на Kendo:

Kendo - Използване на UTC време от страна на клиента и сървъра

person jaredbaszler    schedule 21.12.2014

person    schedule
comment
Благодаря, но това беше едно от първите неща, които опитах. Все още ме оставя с празна мрежа при прилагане на филтър. Както казах, изглежда, че това трябва да е просто, но се оказва, че е забележително. - person NotSoMuchNo; 13.05.2013