0
var showEmps = function (did) {
$("#myGrid").kendoGrid({
                        sortable: true,
                        pageable: true,
                        scrollable: true,
                        columnMenu: true,
                        filterable: {
                            extra: false
                        },
                        dataSource: {
                            transport: {

                                read: "/Employee/ShowEmpByDept",
                                dataType: "json",
                                parameterMap: function (data1, type) {

                                    var data = {
                                       deptid: did
                                    }
                                    return data;
                                }
                            },
                            schema: {
                                model: {
                                    fields: {
                                        EmpID: { type: "number" },
                                        JOD: { type: "date" },
                                        LastName: { type: "string" },
                                        Dept: { type: "string" },
                                    }
                                }
                            },
                            pageSize: 15
                        },
                        columns: [
                        {
                            field: "EmpID",
                            title: "Emp ID",
                            filterable: false,
                            headerTemplate: '<span title="Emp ID">Emp ID</span>'
                        },
                        {
                            field: "JOD",
                            title: "JOD",
                            width: 90,
                            template: '#= kendo.toString(JOD,\"MM/dd/yyyy\") #',
                            filterable: { extra: true }
                        },
                        {
                            field: "LastName",
                            title: "Last Name",
                        },
                        {
                            field: "Dept",
                            title: "Dept",

                        }

                        ],

                    }).data("kendoGrid");
            };
   });

我在文档就绪方法上调用 showEmps 方法,例如 (showEmps(1))

现在,我有一个包含部门列表的下拉列表。

当我更改下拉列表时,我想将部门 ID 传递给 showEmps 方法,以便使用选定的下拉部门刷新我的网格

4

1 回答 1

2

不要这样做:

var grid1 = jQuery("#mygrid").kendoGrid({
     dataSource: dataSource,
});

如您所见,这将创建一个新的 Grid 对象。

你应该做的是:

var grid1 = jQuery("#mygrid").data("kendoGrid");
grid1.dataSource.data(newData);

如果您已经加载了新数据,或者只是:

dataSource.read();

如果您想触发新的读取(这将自动刷新您的网格)。

请记住,它read可能会接收一个对象作为参数,然后该对象可用于parameterMap组成实际请求。因此,您可以执行以下操作:

var ds = new kendo.data.DataSource({
    transport: {
        read: "/Employee/ShowEmp",
        parameterMap: function (data, type) {
            if (type === "read") {
                // If no empId is provided it uses 1, otherwise uses the one passed as argument
                data.empId = data.empId ? data.empId : 1;
                return data;
            }
        }
    }
});

// Read default empId (this is the same that it is executed when grid is initialized)
ds.read();
// Read employee with Id = 2
ds.read({ empId: 2 });

好优雅!!

于 2014-09-01T13:44:58.097 回答