Kendo UI ComboBox DataSource RequestEnd事件

时间:2013-10-07 17:48:51

标签: kendo-ui kendo-combobox

我有一组ComboBox,其项目来自同一个DataSource.Read事件。在某些情况下,我想过滤这些项目。我的ComboBox看起来像这样:

@(Html.Kendo().ComboBox()
    .HtmlAttributes(new { style = "font-size:10px; background-color: #f4f4f4;" })
    .Name(string.Format( "{0}{1}", p, f[0] ) )
    .Placeholder("Choose a value...")
    .DataTextField("Name")
    .DataValueField("Value")
    .DataSource( source => 
    {
        source.Read( read => read.Action( "MyMethod", "MyController", new { _type = f[2] } ) )
            .Events( e => e.RequestEnd( f[0] == "F1" && p != "P1" ? "SetFilter" : "NoFilter" ) );
    } )
)

变量p和f [x]是我正在运行的几个foreach循环的字符串。当我浏览这些循环时,我的意图是单独保留DataSources,除非在f [0] ==“F1”和p!=“P1”的情况下。

我的两个函数看起来像这样:

function NoFilter() { }

function SetFilter( e ) {
    var $filter = new Array();
    $filter.push({ field: "Name", operator: "startswith", value: "O" });
    e.sender.filter({ logic: "or", filters: $filter });
}

总而言之,我正在加载12个组合框,其中两个符合我的例外情况。当编辑器出现时,所有组合框在加载时会短暂显示等待指示符。这一切都很好,除了我的两个例外的等待指标永远不会消失,即使过滤器是按我的意愿应用的。

我错过了什么让等待指标继续运行?

1 个答案:

答案 0 :(得分:0)

似乎您正在递归调用服务器,因为您在读取数据后设置了过滤器。将过滤器设置为数据源将再次使用过滤器调用read方法。这意味着它将再次调用RequestEnd方法(永不结束)。

相反,这样做会尝试在创建网格后设置过滤器。