Javascript 格式日期和日期;kendo.ui.GridColumn中的布尔值

Javascript 格式日期和日期;kendo.ui.GridColumn中的布尔值,javascript,datetime,kendo-ui,format,boolean,Javascript,Datetime,Kendo Ui,Format,Boolean,在我们的typescript应用程序中,我们有一个剑道网格。在Product.ts中,我定义了如下列: const cols = <kendo.ui.GridColumn[]>[ { field: "Name", title: "Name" }, { field: "ProductDate", template: "#= kendo.toString(ProductDate, 'dd.MM.yyyy') #" title: "Date" }, { field:

在我们的typescript应用程序中,我们有一个剑道网格。在Product.ts中,我定义了如下列:

const cols = <kendo.ui.GridColumn[]>[
    { field: "Name", title: "Name" },
    { field: "ProductDate", template: "#= kendo.toString(ProductDate, 'dd.MM.yyyy') #" title: "Date" },
    { field: "IsNew", template: "# if (IsNew == true) { 'Yes' } else { 'No } #", title:"Is new" }];
"# if (IsNew == true) { # Yes # } else { # No # } #"
 schema: {
                    model: {
                        fields: {
                            ClientTimestamp: {
                                type: "date"
                            },
                            Message: {
                                type: "string"
                            }
                        }
                    }
                }
 dataBinding: function (e) {
                for (var i = 0; i < e.items.length; i++) {
                     e.items[i].date = new Date(e.items[i].date);
                }
            },
template: "# if (IsNew == true) { # Yes # } else { # No # } #"
现在我的问题是日期和布尔字段没有正确显示:

网格中ProductDate的格式:2016-08-23T15:37
IsNew根本不显示

除了
template
之外,我还尝试了
格式:“{0:dd.MM.yyyy}”
以获得相同结果的日期

我在浏览器控制台中没有收到任何错误消息

我做错了什么

编辑

迪莫迪的回答解决了我关于布尔字段的问题。我的模板现在如下所示:

const cols = <kendo.ui.GridColumn[]>[
    { field: "Name", title: "Name" },
    { field: "ProductDate", template: "#= kendo.toString(ProductDate, 'dd.MM.yyyy') #" title: "Date" },
    { field: "IsNew", template: "# if (IsNew == true) { 'Yes' } else { 'No } #", title:"Is new" }];
"# if (IsNew == true) { # Yes # } else { # No # } #"
 schema: {
                    model: {
                        fields: {
                            ClientTimestamp: {
                                type: "date"
                            },
                            Message: {
                                type: "string"
                            }
                        }
                    }
                }
 dataBinding: function (e) {
                for (var i = 0; i < e.items.length; i++) {
                     e.items[i].date = new Date(e.items[i].date);
                }
            },
template: "# if (IsNew == true) { # Yes # } else { # No # } #"
正如p.Ommer在他的回答中所写,我将日期添加到模式中。现在,日期与我的模板一起以正确的格式显示,但是如果没有指定日期,则显示“null”而不是“nothing”。当我将模板更改为
“#如果(ProductDate!=null){kendo.toString(ProductDate,'dd.MM.yyyy')#”
,则每行的product date列都保持为空


如何处理日期的空列?

我也遇到了同样的问题。对我来说,向数据源添加一个架构是可行的,如下所示:

const cols = <kendo.ui.GridColumn[]>[
    { field: "Name", title: "Name" },
    { field: "ProductDate", template: "#= kendo.toString(ProductDate, 'dd.MM.yyyy') #" title: "Date" },
    { field: "IsNew", template: "# if (IsNew == true) { 'Yes' } else { 'No } #", title:"Is new" }];
"# if (IsNew == true) { # Yes # } else { # No # } #"
 schema: {
                    model: {
                        fields: {
                            ClientTimestamp: {
                                type: "date"
                            },
                            Message: {
                                type: "string"
                            }
                        }
                    }
                }
 dataBinding: function (e) {
                for (var i = 0; i < e.items.length; i++) {
                     e.items[i].date = new Date(e.items[i].date);
                }
            },
template: "# if (IsNew == true) { # Yes # } else { # No # } #"
我还将日期强制转换为js日期对象,如下所示:

const cols = <kendo.ui.GridColumn[]>[
    { field: "Name", title: "Name" },
    { field: "ProductDate", template: "#= kendo.toString(ProductDate, 'dd.MM.yyyy') #" title: "Date" },
    { field: "IsNew", template: "# if (IsNew == true) { 'Yes' } else { 'No } #", title:"Is new" }];
"# if (IsNew == true) { # Yes # } else { # No # } #"
 schema: {
                    model: {
                        fields: {
                            ClientTimestamp: {
                                type: "date"
                            },
                            Message: {
                                type: "string"
                            }
                        }
                    }
                }
 dataBinding: function (e) {
                for (var i = 0; i < e.items.length; i++) {
                     e.items[i].date = new Date(e.items[i].date);
                }
            },
template: "# if (IsNew == true) { # Yes # } else { # No # } #"
数据绑定:函数(e){
对于(变量i=0;i
我也遇到了同样的问题。对我来说,向数据源中添加架构是可行的,如下所示:

const cols = <kendo.ui.GridColumn[]>[
    { field: "Name", title: "Name" },
    { field: "ProductDate", template: "#= kendo.toString(ProductDate, 'dd.MM.yyyy') #" title: "Date" },
    { field: "IsNew", template: "# if (IsNew == true) { 'Yes' } else { 'No } #", title:"Is new" }];
"# if (IsNew == true) { # Yes # } else { # No # } #"
 schema: {
                    model: {
                        fields: {
                            ClientTimestamp: {
                                type: "date"
                            },
                            Message: {
                                type: "string"
                            }
                        }
                    }
                }
 dataBinding: function (e) {
                for (var i = 0; i < e.items.length; i++) {
                     e.items[i].date = new Date(e.items[i].date);
                }
            },
template: "# if (IsNew == true) { # Yes # } else { # No # } #"
我还将日期强制转换为js日期对象,如下所示:

const cols = <kendo.ui.GridColumn[]>[
    { field: "Name", title: "Name" },
    { field: "ProductDate", template: "#= kendo.toString(ProductDate, 'dd.MM.yyyy') #" title: "Date" },
    { field: "IsNew", template: "# if (IsNew == true) { 'Yes' } else { 'No } #", title:"Is new" }];
"# if (IsNew == true) { # Yes # } else { # No # } #"
 schema: {
                    model: {
                        fields: {
                            ClientTimestamp: {
                                type: "date"
                            },
                            Message: {
                                type: "string"
                            }
                        }
                    }
                }
 dataBinding: function (e) {
                for (var i = 0; i < e.items.length; i++) {
                     e.items[i].date = new Date(e.items[i].date);
                }
            },
template: "# if (IsNew == true) { # Yes # } else { # No # } #"
数据绑定:函数(e){
对于(变量i=0;i
除了所需的数据字段类型定义外,正如p.Ommer所建议的,布尔列模板的定义如下:

const cols = <kendo.ui.GridColumn[]>[
    { field: "Name", title: "Name" },
    { field: "ProductDate", template: "#= kendo.toString(ProductDate, 'dd.MM.yyyy') #" title: "Date" },
    { field: "IsNew", template: "# if (IsNew == true) { 'Yes' } else { 'No } #", title:"Is new" }];
"# if (IsNew == true) { # Yes # } else { # No # } #"
 schema: {
                    model: {
                        fields: {
                            ClientTimestamp: {
                                type: "date"
                            },
                            Message: {
                                type: "string"
                            }
                        }
                    }
                }
 dataBinding: function (e) {
                for (var i = 0; i < e.items.length; i++) {
                     e.items[i].date = new Date(e.items[i].date);
                }
            },
template: "# if (IsNew == true) { # Yes # } else { # No # } #"
换句话说,
Yes
No
字符串应该在模板的JavaScript部分之外

如果日期以标准方式序列化,则不需要强制转换日期:

如果确实需要手动转换(解析)日期,正确的位置是Kendo UI数据源的
schema.parse
函数:


空值按设计显示为“空”字符串。使用模板来避免这种情况完全可以。

除了所需的数据字段类型定义,如p.Ommer所建议的,布尔列模板的定义应如下所示:

const cols = <kendo.ui.GridColumn[]>[
    { field: "Name", title: "Name" },
    { field: "ProductDate", template: "#= kendo.toString(ProductDate, 'dd.MM.yyyy') #" title: "Date" },
    { field: "IsNew", template: "# if (IsNew == true) { 'Yes' } else { 'No } #", title:"Is new" }];
"# if (IsNew == true) { # Yes # } else { # No # } #"
 schema: {
                    model: {
                        fields: {
                            ClientTimestamp: {
                                type: "date"
                            },
                            Message: {
                                type: "string"
                            }
                        }
                    }
                }
 dataBinding: function (e) {
                for (var i = 0; i < e.items.length; i++) {
                     e.items[i].date = new Date(e.items[i].date);
                }
            },
template: "# if (IsNew == true) { # Yes # } else { # No # } #"
换句话说,
Yes
No
字符串应该在模板的JavaScript部分之外

如果日期以标准方式序列化,则不需要强制转换日期:

如果确实需要手动转换(解析)日期,正确的位置是Kendo UI数据源的
schema.parse
函数:


空值显示为“空”设计字符串。使用模板来避免这种情况完全可以。

您的解决方案成功地以正确的格式显示了日期。现在我遇到了空列问题。我在问题中添加了一些信息。您的解决方案成功地以正确的格式显示了日期。现在我遇到了空列问题。我在问题中添加了一些信息选项。谢谢,我的布尔值现在显示正确。P.Ommer的解决方案对我显示日期很有效,但现在我遇到了空列问题。我在问题中添加了一些信息。使用模板避免“空”网格中的字符串完全可以。谢谢,我的布尔值现在显示正确。P.Ommer的解决方案对我来说可以显示日期,但现在我遇到了空列问题。我在问题中添加了一些信息。使用模板避免网格中的“空”字符串完全可以。