2013-10-07 3 views
0

같은 DataSource.Read 이벤트에서 가져온 항목이있는 ComboBox 세트가 있습니다. 경우에 따라 항목을 필터링하고 싶습니다. 내 콤보는 다음과 같습니다검도 UI ComboBox 데이터 소스 RequestEnd 이벤트

@(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"인 경우를 제외하고 DataSource 만 남겨 두려고합니다.

내 두 함수는 다음과 같다 :

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

데이터를 읽은 후 필터를 설정하기 때문에 재귀 적으로 서버를 호출하는 것처럼 보입니다. 필터를 데이터 소스로 설정하면 필터가있는 read 메소드가 다시 호출됩니다. 즉, RequestEnd 메서드를 다시 호출합니다 (끝내지 않음).

대신이 방법으로 그리드를 만든 후에 필터를 설정하십시오.

관련 문제