首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >KendoUi MultiSelect ItemTemplate

KendoUi MultiSelect ItemTemplate
EN

Stack Overflow用户
提问于 2013-07-21 10:27:49
回答 1查看 3.5K关注 0票数 0

我一直试图让模板(ItemTemplate等)在MultiSelect控件中工作。在较高级别上,我希望在页面加载时加载MultiSelect,并希望能够对其进行更新。

我有一些非常简单的html:

代码语言:javascript
复制
<script type="text/x-kendo-template" id="members-template">

    <select multiple="multiple">
        # for (var j = 0; j < Members.length; j++) { #
                <option selected value=' + Members.length + '>'HI'</option>

        # } #
    </select>
</script>

<div id="TeeOffTimes"></div>

而javascript是:

代码语言:javascript
复制
var memberData =[
{
    "Id": 1,
    "FirstName": "Lorenzo",
    "LastName": "Lamas",
    "Gender": "M",
    "Handicap": 72,
    "Discount": 0,
    "CartId": null,
    "Email": null,
    "Cart": null,
    "Lockers": [],
    "MemberAddresses": [],
    "MemberCarts": [],
    "MemberLockers": [],
    "MemberTeeOffs": []
},
{
    "Id": 2,
    "FirstName": "Harry",
    "LastName": "Burgess",
    "Gender": "M",
    "Handicap": 68,
    "Discount": 0,
    "CartId": null,
    "Email": null,
    "Cart": null,
    "Lockers": [],
    "MemberAddresses": [],
    "MemberCarts": [],
    "MemberLockers": [],
    "MemberTeeOffs": []
},
{
    "Id": 3,
    "FirstName": "Paul",
    "LastName": "Stevens",
    "Gender": "M",
    "Handicap": 78,
    "Discount": 0,
    "CartId": null,
    "Email": null,
    "Cart": null,
    "Lockers": [],
    "MemberAddresses": [],
    "MemberCarts": [],
    "MemberLockers": [],
    "MemberTeeOffs": []
},
{
    "Id": 4,
    "FirstName": "Ben",
    "LastName": "Crossen",
    "Gender": "M",
    "Handicap": 82,
    "Discount": 0,
    "CartId": null,
    "Email": null,
    "Cart": null,
    "Lockers": [],
    "MemberAddresses": [],
    "MemberCarts": [],
    "MemberLockers": [],
    "MemberTeeOffs": []
}
];

$(function () {

$('#TeeOffTimes').kendoMultiSelect({
    placeholder: "Select members...",
    autoBind: false,
    dataSource: {
        type: "json",
        serverFiltering: true,
        transport: {
            read: {
                url: '/echo/json/',
                type: 'GET'
            }
        },
        schema: {

            parse: function (response) {                    
                var dataForTemplate = { Members: JSON.stringify(memberData) };                    
                return { json: dataForTemplate };
            }
        }
    },
    itemTemplate: $("#members-template").html()
}).data("kendoMultiSelect");    

});

代码的这是一个jsFiddle。您可以看到,我使用了jsFiddle的echo特性来模拟返回相关数据的Ajax调用。

有KendoUi忍者准备迎接挑战吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-21 18:40:18

你想要做什么还不完全清楚,但有几个问题。

首先,Kendo DataSource需要接受一个数据数组,而不是一个项,因此这段代码是不正确的:

代码语言:javascript
复制
parse: function (response) {                    
  var dataForTemplate = { Members: JSON.stringify(memberData) };                    
  return { json: dataForTemplate };
}

它应该返回一个数组,或者指定schema.data = "json.dataForTemplate“告诉DataSource从返回对象的json.dataForTemplate字段中提取数据数组。尽管这样做更容易:

代码语言:javascript
复制
parse: function (response) {   
  return dataForTemplate;
}

第二,看起来您正在尝试为整个multiselect小部件创建一个模板,但是该模板被应用于multiselect (数据源中的每个项)中的每个可选项。您指定的模板将创建一个新的<select>元素,这将导致MultiSelect小部件打开到另一系列选中的下拉框中。

你想做这样的事吗?http://jsfiddle.net/2GDSv/1/

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17771348

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档