【问题标题】:jQuery kendo grid popup editor doesn't pass dropdown values to .net MVC controller?jQuery kendo 网格弹出编辑器不会将下拉值传递给 .net MVC 控制器?
【发布时间】:2020-03-11 11:37:01
【问题描述】:

我正在尝试在 jquery kendo 网格弹出编辑器中编辑一行。但是当我单击更新按钮时,它不会将选定的下拉值提交给控制器,而它会毫无问题地提交其他属性。我尝试了很多例子,但没有一个效果很好。 这是我的代码

var element = $("#grid").kendoGrid({
        dataSource: {
            type: "json",
            transport: {
                read: '/controller/GetEmployees', 
                update: {
                    url: "/controller/UpdateEmployee",
                    dataType: "json"
                },
            },
            pageSize: 10,
            serverPaging: true,
            serverSorting: false,
            schema: {
                model: {
                    id: "EmployeeID",
                    fields: {
                        EmployeeID: { type: "number", editable: false },
                        EmployeeName: { type: "string", editable: true },  
                        EmployeeStatus: { defaultValue: { ID: 1, Name: "Active" }, editable: true }
                    }
                }
            }
        },
        height: 500,
        sortable: false,
        pageable: false,
        editable: "popup",
        toolbar: ["create"],
        columns: [               
            {
                field: "EmployeeName",
                title: "Employee Name",
                width: "110px"
            },
            {
                field: "EmployeeStatus",
                title: "Status",
                width: "110px",
                editor: activeInactiveDropDownEditor,
                template: "#=EmployeeStatus.Name#"
            },
            {
                command: "edit",
                width: "80px"
            }
        ]
    });

});

}

function activeInactiveDropDownEditor(container, options) {    
    $('<input required name="' + options.field + '" data-bind="ID"/>')
    .appendTo(container)
        .kendoDropDownList({
            //autoBind: true,
            dataTextField: "Name",
            dataValueField: "ID",
            dataSource: {
                type: "json",
                transport: {
                    read: "/controller/GetStatusList"
                }
            }
        });
}

请问有人能找到这里的错误吗?

【问题讨论】:

  • 控制台有错误吗?您是否尝试在提交后记录 EmployeeStatus 的值?
  • 没有显示错误。是的,我从控制器断点检查了值。它显示 { ID = 0, Name = null }

标签: javascript jquery kendo-ui popup kendo-grid


【解决方案1】:

终于找到了解决办法。我刚刚用 type 属性修改了更新请求,现在效果很好。

                update: {
                    type: 'post', // just added this and works well
                    url: "/controller/UpdateEmployee",
                    dataType: "json"
                },

【讨论】:

    【解决方案2】:

    我认为您的问题在于绑定,我的意思是,它不仅仅是添加带有字段名称的数据属性bind,有时将模型绑定到小部件需要一定程度的复杂性。由于我无法重现您的整个 sn-p,我建议您使用 options.model 设置 input 值,因此小部件可以使用正确的值进行初始化:

    function activeInactiveDropDownEditor(container, options) {    
        $('<input required name="' + options.field + '" value="' + options.model.ID + '" />')
    

    如果这不起作用,请设置 value init 参数或类似的参数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多