带有空白项的Kendo DropDownList模板

时间:2014-06-19 17:56:47

标签: kendo-ui multiple-columns kendo-dropdown

我正在尝试使用Kendo DropDownList并在列表顶部提供一个空白项目,并使用模板提供多个列。

   var ticketType = $("#TicketType").kendoDropDownList
({

    dataTextField: "TicketTypeName",
    dataValueField: "TicketTypeId",
    optionLabel: " ", //This should add a blank item, but errors out instead.
    dataSource:
    {
        serverFiltering: true,
        type: "jsonp",
        transport:
        {
            read:
            {
                url: "../Service/IncidentManagement.asmx/GetTicketTypeList",
                contentType: "application/json; charset=utf-8",
                type: "POST"
            }
        },
        schema:
        {
            data: "d"
        }
    },
    template: "<div><span>${TicketTypeName}</span><span>${TicketTypeDescription}</span></div>"
}).data("kendoDropDownList");

以上产生

  

未捕获的ReferenceError:未定义TicketTypeDescription

如果我没有在下面指定optionLabel,那么下拉列表工作正常(没有空项目)。

如果我指定了optionLabel并删除了模板选项,那么它可以正常工作(没有多列)。

我是否有某种方法可以检查模板中是否未定义?有点像:

<span>${TicketTypeDescription} !== undefined ? ${TicketTypeDescription} : '' </span>

3 个答案:

答案 0 :(得分:2)

根据Telerik的回复:

  

问题来自于optionLabel不知道的事实   关于数据对象的其他属性。所以你需要设置一些   值,甚至是空值,以便正常工作。

因此,需要按如下方式指定optionLabel:

optionLabel: {
          TicketTypeName: " ",
          TicketTypeId: "",
          TicketTypeDescription: ""
        }

答案 1 :(得分:0)

你很亲密;但使用#​​符号来tell Kendo where javascript and their template语法开始和结束。试试这个:

# if (TicketTypeDescription !== undefined) { #
    <span>&nbsp;</span>
# } else { #
    <span>#: TicketTypeDescription #</span>
# } #

#允许你在你的html中散布javascript。此外,#:自动html对内容进行编码,只是对你很重要。否则,您可以使用#=获得相同的结果。

另外,显然你不需要span元素,但如果你想以某种方式装饰或设置所附值的样式,它们会很有帮助。

答案 2 :(得分:0)

您可以尝试#:data&amp;&amp; data.TicketTypeDescription#

也不要使用$ {}语法,不推荐使用。