Kendo ui 剑道UI组合框数据源RequestEnd事件

Kendo ui 剑道UI组合框数据源RequestEnd事件,kendo-ui,kendo-combobox,Kendo Ui,Kendo Combobox,我有一组组合框,它们的项来自同一个DataSource.Read事件。在某些情况下,我希望筛选项目。我的组合框如下所示: @(Html.Kendo().ComboBox() .HtmlAttributes(new { style = "font-size:10px; background-color: #f4f4f4;" }) .Name(string.Format( "{0}{1}", p, f[0] ) ) .Placeholder("Choose a value..

我有一组组合框,它们的项来自同一个DataSource.Read事件。在某些情况下,我希望筛选项目。我的组合框如下所示:

@(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" ) );
    } )
)
function NoFilter() { }

function SetFilter( e ) {
    var $filter = new Array();
    $filter.push({ field: "Name", operator: "startswith", value: "O" });
    e.sender.filter({ logic: "or", filters: $filter });
}
变量p和f[x]是我正在运行的几个foreach循环中的字符串。当我运行这些循环时,我的意图是不使用数据源,除非f[0]=“F1”和p!=“P1”

我的两个函数如下所示:

@(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" ) );
    } )
)
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个组合框正在加载,其中两个适合我的异常。当编辑器出现时,所有组合框在加载时都会短暂显示等待指示器。这一切都很好,除了我的两个异常的等待指示器永远不会消失,即使我希望应用过滤器


让等待指示器保持运行的原因是什么?

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


相反,在创建网格后尝试设置过滤器

浏览器控制台中是否有错误?有。脚本28:堆栈空间不足,jquery.min.js,第3行字符6327。