0

同じ DataSource.Read イベントからアイテムが取得される ComboBoxes のセットがあります。場合によっては、アイテムをフィルタリングしたい。私の 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 ループのカップルからの文字列です。これらのループを実行するとき、私の意図は、f[0] == "F1" および p != "P1" の場合を除いて、DataSources をそのままにしておくことです。

私の2つの関数は次のようになります。

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 個のコンボ ボックスをロードしていますが、そのうちの 2 個は私の例外に該当します。エディターが起動すると、すべてのコンボ ボックスがロード中に一時的に待機インジケーターを表示します。これはすべてうまく機能しますが、フィルターが希望どおりに適用されても、2 つの例外の待機インジケーターが消えることはありません。

待機インジケーターを実行したままにしている何が欠けていますか?

4

1 に答える 1

0

データを読み取った後にフィルターを設定しているため、サーバーを再帰的に呼び出しているようです。データソースにフィルターを設定すると、フィルターを使用して読み取りメソッドが再度呼び出されます。つまり、 RequestEndメソッドが再度呼び出されます (決して終了しません)。

この方法ではなく、グリッドの作成後にフィルタを設定してみてください。

于 2013-10-09T02:52:23.983 に答える