在javascript中将列类型设置为Kendo Grid上的数据

时间:2016-10-26 13:11:46

标签: javascript jquery asp.net-mvc kendo-grid

我有一个用javascript生成的kendo网格。我没有数据源,因为数据在页面上,然后javascript在其上生成网格。我正在尝试将列设置为Date类型,但是当我执行时,该列只显示为空。

这是用于生成kendo网格的脚本

var grid = $("#punches").kendoGrid({
        dataSource: {
            pageSize: 15,
            schema: {
                model: {
                    fields: {
                        PunchDay: { type: 'date' }
                    }
                }
            }
        },
        sortable: true,
        selectable: "multiple",
        pageable: true,
        filterable: true,
        scrollable: false,
        groupable: true,
        resizable: true
    }).data("kendoGrid");

设置类型时,PunchDay列显示为空。我认为它与该列中的数据有关,如此设置

@FieldTranslation.ToShortDate(Html.DisplayFor(modelItem => item.PunchDay).ToString())

因为它是一个字符串而不是日期格式。但是,我没办法解决这个问题。我的网格代码是

<table class="table" id="punches">
            <thead>
            <tr>
                <th title="@FieldTranslation.GetLabel("ID", GlobalVariables.LanguageID)">
                    @FieldTranslation.GetLabel("ID", GlobalVariables.LanguageID)
                </th>
                <th title="@FieldTranslation.GetLabel("EmployeeName", GlobalVariables.LanguageID)">
                    @FieldTranslation.GetLabel("EmployeeName", GlobalVariables.LanguageID)
                </th>
                <th title="@FieldTranslation.GetLabel("PunchDay", GlobalVariables.LanguageID)">
                    @FieldTranslation.GetLabel("PunchDay", GlobalVariables.LanguageID)
                </th>
                <th title="@FieldTranslation.GetLabel("PunchIn", GlobalVariables.LanguageID)">
                    @FieldTranslation.GetLabel("PunchIn", GlobalVariables.LanguageID)
                </th>
                <th title="@FieldTranslation.GetLabel("PunchOut", GlobalVariables.LanguageID)">
                    @FieldTranslation.GetLabel("PunchOut", GlobalVariables.LanguageID)
                </th>
                <th title="@FieldTranslation.GetLabel("Adjustment Time", GlobalVariables.LanguageID)">
                    @FieldTranslation.GetLabel("Adjustment Time", GlobalVariables.LanguageID)
                </th>
                <th title="@FieldTranslation.GetLabel("Adjustment Description", GlobalVariables.LanguageID)">
                    @FieldTranslation.GetLabel("Adjustment Description", GlobalVariables.LanguageID)
                </th>
                <th title="@FieldTranslation.GetLabel("WorkHours", GlobalVariables.LanguageID)">
                    @FieldTranslation.GetLabel("WorkHours", GlobalVariables.LanguageID)
                </th>
                @*<th>
                    @Html.DisplayNameFor(model => model.Inactive)
                </th>*@
                <th title="@FieldTranslation.GetLabel("Department", GlobalVariables.LanguageID)">
                    @FieldTranslation.GetLabel("Department", GlobalVariables.LanguageID)
                </th>
                <th width="125px;" class="hidden-filter">Actions</th>
            </tr>
            </thead>

            <tbody>
            @foreach (var item in Model)
            {
                <tr>
                    <td>
                        @Html.DisplayFor(modelItem => item.ID)
                    </td>
                    <td>
                        @Html.DisplayFor(modelItem => item.EmployeeName)
                    </td>
                    <td>
                        @FieldTranslation.ToShortDate(Html.DisplayFor(modelItem => item.PunchDay).ToString())
                    </td>
                    <td>
                        @FieldTranslation.ToShortTime(Html.DisplayFor(modelItem => item.PunchIn).ToString())
                    </td>
                    <td>
                        @FieldTranslation.ToShortTime(Html.DisplayFor(modelItem => item.PunchOut).ToString())
                    </td>
                    <td>
                        @Html.DisplayFor(modelItem => item.AdjustTime)
                    </td>
                    <td>
                        @Html.DisplayFor(modelItem => item.AdjustDescr)
                    </td>
                    <td>
                        @Html.DisplayFor(modelItem => item.WorkHours)
                    </td>
                    @*<td>
                        @Html.DisplayFor(modelItem => item.Inactive)
                    </td>*@
                    <td>
                        @Html.DisplayFor(modelItem => item.Department)
                    </td>
                    <td>
                        <a href="@Url.Action("EditTime", "TimePunches", new {id = item.ID, flt = ViewBag.FLT})" title="Edit"><i class="icon-edit fa fa-pencil fa-fw fa-lg"></i></a>
                        <a href="@Url.Action("PunchLogIndex", "TimePunches", new {id = item.ID, flt = ViewBag.FLT})" title="Punch Log"><i class="icon-purple fa fa-book fa-fw fa-lg"></i></a>
                        <a href="@Url.Action("PunchRequestIndex", "TimePunches", new { punchId = item.ID, flt = ViewBag.FLT })" title="See Change Request Log"><i class="icon-niagara fa fa-list fa-fw fa-lg"></i></a>
                        <a href="#" id="delete" data-id="@item.ID" data-client="@item.ClientID"><i class="icon-red fa fa-times fa-fw fa-lg"></i></a>
                    </td>
                </tr>
            }
            </tbody>
        </table>

我该怎样做才能重新出现我的日期?

1 个答案:

答案 0 :(得分:0)

尝试添加像此一样的列

var grid = $("#punches").kendoGrid({
    dataSource: {
        pageSize: 15,
        schema: {
            model: {
                fields: {
                    PunchDay: { type: 'date' }
                }
            }
        }
    },
    sortable: true,
    selectable: "multiple",
    pageable: true,
    filterable: true,
    scrollable: false,
    groupable: true,
    resizable: true
},
columns: [
    { field: "PunchDay", title: "PunchDay", format: "{0:MM/dd/yyyy}" },
    ...
]).data("kendoGrid");