如何为网格 header 中的 kendo 下拉过滤器设置默认值

How to set default value for kendo dropdown filter in grid's header

情况如下:我们有一个带有列的 kendo 网格,在一列中我们有一个用于过滤目的的 kendo 下拉列表。客户端基于 angularjs,服务器端基于 c#。那么,是否可以在不知道其 ID 的情况下为 kendo 下拉菜单设置默认值?我正在搜索第二天,但在 web/teletrik 文档中找不到任何内容。

代码

$scope.GridOptions =
            {
                pageable: { refresh: true, pageSizes: true },
                columns: [
                    // other columns here
                    {
                        field: "RegistrationStatus", title: "Status", width: 13,
                        filterable: {
                            operators: {
                                string: {
                                    eq: "Is equal to",
                                    neq: "Is not equal to"
                                }
                            },
                            ui: function(element) {
                                element.kendoDropDownList({
                                    dataSource: [
                                        { Name: "Registered", Value: "PassedInterview" },
                                        { Name: "Pending", Value: "PassedInterview" },
                                        { Name: "Rejected", Value: "Rejected" }
                                    ],
                                    dataTextField: "Name",
                                    dataValueField: "Value",
                                    optionLabel: "--Select Status--"
                                    defaultValue: "PassedInterview" // smth like this, is this possible? or achieve in any other methods instead of taking dropdown id, which I dont know because this is hided inside
                                });
                            }
                        }
                    }
                ],
                sortable: true,
                filterable: true,
                selectable: 'row',
                editable: 'inline'
            };

我在初始化后设置了 value

element.data("kendoDropDownList").value("PassedInterview"); 

Demo. Note that you can also use select() 方法,如果你喜欢。

问题是,我不知道为什么,但是您不能在小部件创建后立即调用它,您必须使用 window.setTimeout()。我知道,它很丑。但是在创建和显示过程之间的某个地方,您的函数有点 被忽略 并且如果直接调用则不起作用。这就是计时器的原因(尝试w/o并自行检查)。

我也尝试在创建参数中设置 valueindex,但是 none 起作用了(它们实际上应该起作用)。