我有一组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个组合框,其中两个符合我的例外情况。当编辑器出现时,所有组合框在加载时会短暂显示等待指示符。这一切都很好,除了我的两个例外的等待指标永远不会消失,即使过滤器是按我的意愿应用的。
我错过了什么让等待指标继续运行?
答案 0 :(得分:0)
似乎您正在递归调用服务器,因为您在读取数据后设置了过滤器。将过滤器设置为数据源将再次使用过滤器调用read方法。这意味着它将再次调用RequestEnd
方法(永不结束)。
相反,这样做会尝试在创建网格后设置过滤器。