そこで、texfield を使用してグリッド フィルターで日付をフィルター処理する代わりに、datepicker を追加しました。私が抱えている問題は、フィルタリングの日付ピッカーが、実際にはフォーマットできない別のフォーマットの出力をコントローラーに送信していることです。
「Fri Mar 30 2018 00:00:00 GMT+0200 (Romance Summer Time)」のような日付を返します。フィルターでやりたいことは、UI からの形式を維持することです。この日付形式は私のアプリケーションには適していません。ユーザーの地理的な場所によっては、異なる日付形式の標準を持つ可能性があるため、テレリクは毎回異なる出力を送信するからです。この場合、あらゆる可能性をチェックする必要があります。
グリッド:
@(Html.Kendo().Grid<EmployeeHistoryViewModel>()
.Name("gridEmployeeHistoryList")
.Columns(columns =>
{
columns.Bound(c => c.Action).Title(GlobalResources.Action);
columns.Bound(c => c.ActionTakenOn).Title(GlobalResources.ActionTakenOn).Filterable(f => f.UI("ANAB.Employee.employeehistoryDetail.DateTimeFilter"));
columns.Bound(c => c.Actor).Title(GlobalResources.Actor);
columns.Bound(c => c.FieldName).Title(GlobalResources.FieldName);
columns.Bound(c => c.OldValue).Title(GlobalResources.OldValue);
columns.Bound(c => c.NewValue).Title(GlobalResources.NewValue);
})
.HtmlAttributes(new { style = "height: 550px;" })
.Scrollable()
.Events(ev => ev.DataBound("ANAB.addGridIcons"))
.Selectable(selectable =>
{
selectable.Mode(GridSelectionMode.Single);
selectable.Type(GridSelectionType.Row);
})
.Filterable(filter =>
{
filter.Extra(false);
filter.Operators(op =>
{
op.ForString(str =>
{
str.Clear().Contains("Contains");
});
op.ForDate(date =>
{
date.Clear().IsEqualTo("required format: " + @ANABAppContext.GetDateFormat());
});
});
})
.Resizable(resize => resize.Columns(true))
.Sortable()
.Pageable(pageable => pageable
.Refresh(true)
.ButtonCount(5))
.DataSource(dataSource => dataSource
.Ajax()
.Model(model => model.Id(p => p.Id))
.Read(read => read.Action("GetEmployeeHistoryList", "Employee", new { employeeId = Model.Id }))
.PageSize(ANABAppContext.GetPageSize())
)
)
JS:
var DateTimeFilter = function (control) {
$(control).kendoDatePicker({
format: ANAB.Employee.employeehistoryDetail.options.dateFormat,
parseFormats: ANAB.Employee.employeehistoryDetail.options.dateFormat,
});
}