내 MVC 응용 프로그램에서 KendoUI를 사용하고 있습니다. 일부 입력 상자와 다중 선택 위젯을 사용하여 그리드를 필터링하고 있습니다. 다중 선택 위젯은 선택된 요소를 배열로 전달합니다. 제 질문은 어떻게 multiselect를 사용하여 그리드를 필터링 할 수 있습니까?다중 선택 위젯을 사용하여 KendoUI Grid를 필터링하는 방법은 무엇입니까?
현재 모든 입력은 "AND"의 전역 조건을 공유하므로 데이터를 반환 할 때 함께 작동 할 수 있지만 다중 선택은 작동하려면 "OR"의 하위 조건이 있어야합니다.
내가 시도한 것은 전달 된 배열 객체를 반복하고 개별적으로 반환하는 것입니다. 그들에게 적용될 "또는"의 다중 선택 조건이 필요합니다. 배열 개체가 콘솔에 개별적으로 반환되지만 그리드의 전체 필터링에 포함되어 있지 않아 중복되는 것을 볼 수 있습니다.
이 문제를 해결할 수있는 사람이 있습니까? 아래에 내 코드를 포함 시켰습니다.이 코드는 다중 선택 위젯이 자바 스크립트 코드에있는 위치와 내가 취한 접근 방식을 보여줍니다.
위의 검색 입력란을 제어하는 자바 스크립트입니다.
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: [] }