2013-10-07 3 views
0

У меня есть набор ComboBoxes, элементы которого берутся из одного и того же события DataSource.Read. В некоторых случаях я хочу отфильтровать элементы. Мой ComboBox выглядит следующим образом:Kendo UI ComboBox DataSource RequestEnd event

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

Переменные, р и е [х] являются строками из нескольких Еогеаспа петель, что я бег. Когда я запускаю эти циклы, я намерен оставить только 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 }); 
} 

В целом, у меня есть двенадцать комбо коробки, которые я погрузочные, из которых два соответствуют мои исключения. Когда редактор появляется, все поля со списком кратковременно показывают индикаторы ожидания, пока они загружаются. Все это хорошо работает, за исключением того, что индикаторы ожидания для моих двух исключений никогда не исчезают, хотя фильтры применяются, как я желаю.

Что мне не хватает, что индикаторы ожидания остаются?

+0

У вас возникли ошибки в консоли браузера? –

+0

Да. SCRIPT28: из пространства стека, jquery.min.js, символ линии 3 6327. –

ответ

0

Кажется, что вы рекурсивно вызываете сервер, так как вы устанавливаете фильтр после чтения данных. Установка фильтра в источник данных снова вызовет метод чтения с фильтром. Это означает, что он снова вызовет метод RequestEnd (никогда не заканчивается).

Вместо этого попробуйте установить фильтр после создания сетки.

Смежные вопросы