2013-10-07 75 views
0

我有一組ComboBoxes的項目來自同一個DataSource.Read事件。在某些情況下,我想過濾這些項目。我的組合框看起來是這樣的: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")); 
    }) 
) 

的變量,P和F [X]是由一對夫婦的foreach循環的字符串,我運行。當我運行這些循環時,我的意圖是除了在f [0] ==「F1」和p!=「P1」的情況下單獨保留DataSources。

我的兩個功能是這樣的:

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

是的。 SCRIPT28:堆棧空間不足,jquery.min.js,第3行字符6327。 –

回答

0

似乎你是遞歸調用服務器,因爲你在讀取數據後設置了一個過濾器。對數據源設置過濾器將再次使用過濾器調用讀取方法。這意味着它會再次調用RequestEnd方法(永不結束)。

而不是這樣做嘗試在創建網格後設置過濾器。