当前位置: 首页 > 知识库问答 >
问题:

具有剑道下拉列表选定值的剑道网格未更新

徐飞龙
2023-03-14

在我的剑道网格中,我为每一列都有kenddropDownlist。选定的项目应解析并显示模板文本

我一直在遵循这个例子http://jsfiddle.net/jddevight/Ms3nn/

使现代化

我在这里简化了我的问题http://jsfiddle.net/BlowMan/mf434/

问题

当我在下拉列表中选择一个项目时,它不会返回所选项目的值。它返回null。

/// <reference path="../../jquery-1.8.2.js" />
/// <reference path="../../kendo.web.min.js" />
$(function () {
var menuModel = kendo.data.Model.define({
    fields: {
        "MenuId": { type: "number",editable:false },
        "DisplayText":{type:"string"},
        "MenuOrder": { type: "number" },
        "MenuStatus": { type: "boolean" },
        "HasKids": { type: "boolean" },
        "ParentMenu": { type: "number" }
    }
});

var menuDataSource = new kendo.data.DataSource({

    data:[{"MenuId":1,
    "DisplayText":"Home",
    "MenuOrder":0,
    "MenuStatus":true,
    "HasKids":false,
    "ParentMenu":null},
    {"MenuId":2,
    "DisplayText":"Finance",
    "MenuOrder":1,
    "MenuStatus":true,
    "HasKids":false,
    "ParentMenu":null}]
    schema: {
        model: menuModel
     }
});
var vm = kendo.observable({
    menus: menuDataSource,
    parentItem: [{ Id: 2, 
                    Name: "Finance" },
                { Id: 3, 
                Name: "Corp Services" }],
    getMenuName: function (pMenu) {
        var menuName = "";
        $.each(this.parentItem, function (idx, menu) {
            if (menu.Id == pMenu) {
                menuName = menu.Name;
                return false;
            }
        });
        return menuName;
    }
});
kendo.bind($("#menuItems"), vm);

var parentMenuEditor = function (container, options) {
    $("<input name='" + options.field + "'/>")
    .appendTo(container)
    .kendoDropDownList({
        dataSource: {
           data:[{ Id: 2, Name: "Finance" }, { Id: 3, Name: "Corp Services" }],
        },
        dataTextField: "Name",
        dataValueField: "Id"
    });
};

var grid = $("div[data-role='grid']").data("kendoGrid");
$.each(grid.columns, function (idx, column) {
    if (column.field == "ParentMenu") {
        column.editor = parentMenuEditor;

        return false;
    }
});

});

下面的视图部分

        @{
            ViewBag.Title = "Menu System Index";
        }

        <h2>Menu System Index</h2>
        <div id="menuItems">
            <div class="k-toolbar k-grid-toolbar">
                <a class="k-button k-button-icontext k-grid-add" href="#">
                    <span class="k-icon k-add"></span>
                    Add Person
                </a>
             </div>
            <div data-role="grid" 
                 data-bind="source: menus" 
                 data-editable="true" 
                 data-filterable="true"
                 data-columns='[{"field": "MenuId", "title": "MenuId"}, 
                                {"field": "DisplayText", "title": "DisplayText"}, 
                                {"field": "MenuOrder", "title": "MenuOrder"}, 
                                {"field": "MenuStatus", "title": "MenuStatus"},
                                {"field":"HasKids","title":"HasKids"},                
                                {"field":"ParentMenu","title":"ParentMenu","template":"#= parent().parent().getMenuName(ParentMenu) #"},
                {"command": "destroy", "title": " ", "width": "110px"}]'>
            </div>
        </div>

        <script type="text/x-kendo-template" id="toolbar-template">
            <a class="k-button k-button-icontext k-grid-add" href="\#"><span class="k-icon k-add"></span>Add new record</a>
        </script>

        @section scripts{

            <script src="~/Scripts/Custom/MenuSystem/Index.js"></script>
        }

任何帮助都将不胜感激。这个问题使我感到很难过。

共有1个答案

连德义
2023-03-14

我已经更新了你的JsFiddle演示。请检查一下,如果有任何问题,请告诉我。

var roleEditor = function(container, options) {
$("<input name='" + options.field + "' data-text-field='name' data-value-field='id' data-bind='value:" + options.field + "'/>")

    .appendTo(container)
    .kendoDropDownList({
        dataSource: {
            data: vm.roles
        },
        dataTextField: "name",
        dataValueField: "id"
    });
};
 类似资料:
  • 我想把剑道下拉列表加入我的表格。一切都会好的,除了一件事。当我想用默认的剑道创建工具栏“添加记录”时,我不能绑定从dropdownlist数据源获取的第一个值。 数据源工作正常。DropDownlist也很好用。如果我手动从dropDownlist中选择任何东西,一切正常。 我也试过了。除了“索引”之外,我试图手动从数据源中选择第一项。从视觉上看,它工作得很好。即使选择了第三项,但当我单击“更新”

  • 我在五月有一个剑道MVC下拉列表。我正在成功地将所选值从中保存到数据库中。当我来编辑数据时,该值从模型中正确返回并在下拉树中设置,但是,在下拉树中没有任何项目被视觉上选中。 当我尝试从单击按钮读取下拉树的值时,它正确地返回该值。 上面的javascript警报正确返回该值,但在DropdownTree中没有显示选定的项目。我还尝试删除ValuePrimitive属性,但没有任何效果。 有人能帮我找

  • 我可以通过下面的模板场景将剑道下拉列表添加到剑道网格中: 然而,问题是如何访问dropdownlist以获取其值/文本/索引。到目前为止,我可以使用以下方法获取所选行数据: 这里是JSFiddle代码 请帮帮我,我卡住了。 提前感谢。

  • 我有剑道网格,我需要在两个单元格中内联编辑两个下拉列表。第二个列表依赖于第一个列表。第二个可以有0个或X个项目。当秒为0时,如何在保存项目时向服务器发送空值? 网格如下所示: 操作编辑器模板: 当我单击“保存”时,我在请求中始终具有操作的默认值。谢谢你的帮助!

  • 我有一种情况,我有两个多选择剑道下拉列表,在第一个多选择下拉列表的选择上,我想填充另一个多选择下拉列表。 第一个多选剑道DD: 第2次MultiSelect剑道DD: JS代码: 我所尝试的: 我试图在函数onFirstDropDownChange中调用AJAX,但由于数据源没有绑定到第二个下拉列表,所以这不起作用。 限制条件: 首先,我不想在两个下拉列表中加载数据 第二个下拉列表的值取决于第一个

  • 我在JSFIDLE示例中有以下代码 问题是,当用户单击“添加新记录”时,它会添加一个新项目,其中设施名称下拉列表显示列表中的第一个项目。如果用户单击“更新”,则会保存记录,但会将设施名称清空。原因是,下拉列表中确实没有选定项目。我之所以知道这一点,是因为所选值在传递给控制器代码时为空。所以,我真的很想知道如何 不显示列表中的第一个项目,直到用户在列表中实际选择它或 将选定的项目设置为列表中的第一个