首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >动态改变剑道DataTextField MultSelect

动态改变剑道DataTextField MultSelect
EN

Stack Overflow用户
提问于 2015-04-30 16:33:41
回答 1查看 1.7K关注 0票数 1

我有一个剑道组合盒,有两个值:主,次。我也有一个Kendo变异选择链接到一个数据源。默认情况下,组合框显示“主”和多选择显示“Parent2 1”,“Parent2”,即数据源的“‘Name”字段。

如果用户从组合框中选择‘dataTextField’,则动态地将multiselect的Name2更改为Name2,类似地,当用户从下拉列表中选择'Main‘时,multiselect应该链接到'Name’作为其dataTextField。

这是小提琴

代码语言:javascript
复制
<select id="CategoryOption" style="width: 100px;">
<option>Main</option>
<option>Secondary</option>
</select> <br><br><br><br><br><br>
<select id="MainCategory" style="width: 90%;"></select> 

Java脚本

代码语言:javascript
复制
createCategoryOption("#CategoryOption");
createMainCategory("#MainCategory", "Name", "ID");
function createCategoryOption(divID1)
{
$(divID1).kendoComboBox({
        change: function (e) {
            SetSelectServicesText();
        }
    });
}
function createMainCategory(usersDiv, textField, valueField) {
 $("#MainCategory").kendoMultiSelect({
    dataSource: [
        { Name: "Parent1", Id: 1, Name2: "Child1" },
        { Name: "Parent2", Id: 2, Name2: "Child2" }
    ],
    dataTextField: textField,
    dataValueField: valueField
});
}
function SetSelectServicesText()
{
        if($("#CategoryOption").data("kendoComboBox").value() == "Main")
        {
            $("#MainCategory").destroy();
        createMainCategory("#MainCategory", "Name", "ID");
        }
        else
        {
            $("#MainCategory").destroy();
        createMainCategory("#MainCategory", "Name2", "ID");
        }
}

外部源

代码语言:javascript
复制
<link rel="stylesheet" href="http://cdn.kendostatic.com/2015.1.408/styles/kendo.common.min.css">
<link rel="stylesheet" href="http://cdn.kendostatic.com/2015.1.408/styles/kendo.rtl.min.css">
<link rel="stylesheet" href="http://cdn.kendostatic.com/2015.1.408/styles/kendo.default.min.css">
<link rel="stylesheet" href="http://cdn.kendostatic.com/2015.1.408/styles/kendo.dataviz.min.css">
<link rel="stylesheet" href="http://cdn.kendostatic.com/2015.1.408/styles/kendo.dataviz.default.min.css">
<link rel="stylesheet" href="http://cdn.kendostatic.com/2015.1.408/styles/kendo.mobile.all.min.css">

<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script src="http://cdn.kendostatic.com/2015.1.408/js/kendo.all.min.js"></script>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-30 18:55:17

Kendo小部件通常围绕目标元素创建包装器结构,不是由方法destroy()破坏的(我认为这是一件坏事)。

因此,销毁(或从DOM中删除)小部件并不是那么简单。看看这个:

代码语言:javascript
复制
function createMainCategory(usersDiv, textField, valueField, remove) 
{
    var mc = $("#MainCategory");

    if (remove)
    {
        // Destroys the widget
        mc.data("kendoMultiSelect").destroy();

        // Get the widget wrapper element structure
        var p = mc.closest(".k-widget");

        // Detache the #MainCategory from the wrapper structure
        mc = mc.empty().detach();

        // Remove the wrapper structure
        p.remove();

        // Append the #MainCategory to the body again
        $('body').append(mc);
    }

    $("#MainCategory").kendoMultiSelect({
        dataSource: [
            { Name: "Parent1", Id: 1, Name2: "Child1" },
            { Name: "Parent2", Id: 2, Name2: "Child2" }
        ],
        dataTextField: textField,
        dataValueField: valueField
    });
}

如你所见,在删除块中.

  • 使用内置方法destroy()销毁小部件;
  • 然后选择包含内部所有结构的主包装元件;
  • 在删除它之前,它选择并分离点包装器之外的#MainCategory ( detach()移除但返回其对元素的进一步操作的引用);
  • 因此,使用#MainCategory安全,它可以从DOM获得包装器的整个结构;
  • 最后,将#MainCategory再次添加到主体上,用于托管新的小部件。

小提琴

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

https://stackoverflow.com/questions/29973184

复制
相关文章

相似问题

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