如何在kendo网格java脚本中显示Sql Server时间戳列

时间:2017-03-23 10:40:22

标签: javascript kendo-ui kendo-grid

我的一个sql server表中有一个timestamp列用于维护行版本控制, 但我不知道如何在剑道网格上显示其价值, 这是必需的,因为我的实体不会更新该列中具有空值的记录,通过在网格上显示时间戳值,我会在更新记录时将其取回。  这是我的kendo网格架构

 schema: {
            errors: function(response) {
                if (response.Voucher && response.Voucher !== "True") {
                    return response.Voucher;
                }
                return false;
            },
            data: "data",
            total: "total",
            model: {
                id: "ID",
                fields: {
                    ID: { editable: false, nullable: true },
                    FK_Category_ID: { defaultValue: -1, validation: { required: { message: "" } } },
                    CompanynameAr: { type: "string", validation: { required: { message: " " } } },
                    CompanynameEn: { type: "string" },
                    FK_Country_ID: { defaultValue: -1, validation: { required: { message: "" } } },

                    Address: { type: "string", validation: { required: { message: "" } } },
                    PoBox: { type: "string" },
                    Contractno: { type: "number", validation: { required: { message: "" },min:0 } },
                    Refrence: { type: "number",validation:{min:0}},
                    RemarksMarketing: { type: "string" },
                    Active: { type: "string" },
                    Latitude: { type: "string" },
                    Longitude: { type: "string" },
                    RowVersion: {
                        type: "date", parse: function (value) {
                            return new Date(value * 1000);
                        }
                    }

                    //Address
                }
            }
        }

这里RowVersion是我的列,它保存时间戳值,解析函数只是命中并尝试解决特定问题但不会成功。所以需要帮助

2 个答案:

答案 0 :(得分:1)

在服务器端,添加或更新记录时,不应在查询中包含时间戳(RowVersion)列(即使值为NULL)。 SQL Server将在每次更改任何记录时自动为RowVersion列生成值。因此,如果您使用的是纯SQL,请从SQL中删除RowVersion;或者,如果您使用Entity Framework Code-First,则可以使用[DatabaseGenerated(DatabaseGeneratedOption.Computed)]属性通知Entity Framework它不应更新相关列。

无论如何,如果要向用户显示时间戳(rowversion)值,它是一个8字节的自动递增整数,通常映射到byte[]类型,您可以使用{{1}将其转换为BitConverter.ToInt64()并将其显示给用户。但是您永远不需要在控制器中接收添加/更新请求,因为您不应该在查询中包含它。

答案 1 :(得分:0)

正如您在MSDN上看到的那样,sql server Timestamp值是.net字节数组,因此您无法将其转换为Date值。

您只需对收到的值不进行转换即可隐藏它。