私はMVCアプリケーションでKendoUIを使用しています。いくつかの入力ボックスと複数選択ウィジェットを使用してグリッドをフィルタリングしています。複数選択ウィジェットは、選択された要素を配列として渡します。私の質問は、マルチ選択を使ってグリッドをどのようにフィルタリングできますか?Multiselectウィジェットを使用してKendoUIグリッドをフィルタリングするにはどうすればよいですか?
現時点では、すべての入力はグローバル条件 "AND"を共有しているため、データを返すときに一緒に動作することができますが、マルチセレクションは "OR"というサブ条件を持つ必要があります。
私がしようとしたことは、渡された配列オブジェクトを反復して個々に返すことでした。私はそれらに適用される "または"の複数選択条件が必要です。配列オブジェクトがコンソールに個別に返されているのがわかりますが、グリッドの全体的なフィルタリングには含まれていないため、冗長化されています。
誰でもこの問題を解決できる方法をいくつか挙げることができますか?私は以下の私のコードは、私のjavascriptのコードと私が取った方法でmultiselectウィジェットが座っている場所を示しているが含まれています。
ここに、上記の検索入力ボックスを制御するJavaScriptがあります。
var search_btn = document.getElementById("search-button");
function search() {
var filters = [],
grid_aberdeen = $('#Grid').data('kendoGrid'),
search_charterer = $("#charterer_company").data("kendoDropDownList").value(),
search_start = $("#fixture_start").data("kendoDatePicker").value(),
search_end = $("#fixture_end").data("kendoDatePicker").value(),
search_type = $("#vessel_type").data("kendoDropDownList").value(),
search_duties = $("#workscopecode").data("kendoMultiSelect").value();
if (search_charterer) {
filters.push(
{
field: "charterer_company",
operator: "eq",
value: search_charterer
}
)
}
if (search_start) {
filters.push(
{
field: "fixture_start",
operator: "gte",
value: search_start
})
}
if (search_end) {
filters.push(
{
field: "fixture_end",
operator: "lte",
value: search_end
})
}
if (search_duties) {
var sub_filter = { logic: "or", filters: [] }
$.each(search_duties, function (i, v) {
sub_filter.filters.push[
{
field: "workscopecode",
operator: "eq",
value: v
}
]
console.log(v)
})
};
grid_aberdeen.dataSource.filter({
logic: "and",
filters: filters
});
}
search_btn.addEventListener("click", search);
あなたが見ることができるように私は複数選択に適用したいと思いますが、それは何もしていないことを、あなたがする場合は、「サブ状態」を作成しようとしました。コンソールは、配列の項目がちゃんと分かれているが、実際にはフィルターが機能していないことを示しています。
var sub_filter = { logic: "or", filters: [] }