Perlu diketahui tips ini hanya berlaku untuk template web v3 dan sesudahnya. Sebelum memulai implementasi perlu dilakukan pengecekan pada file WebUI/Infrastructure/QueryRequestParameter.cs
jika belum menggunakan versi terbaru dari solution template web.
Code yang belum support:
//.... //.... @operator = request[$"filter[filters][{i}][filters][{j}][operator]"]; if (!string.IsNullOrEmpty(request[$"filter[filters][{i}][filters][{j}][value]"])) { value = request[$"filter[filters][{i}][filters][{j}][value]"]; } if (!string.IsNullOrEmpty(request[$"filter[filters][{i}][filters][{j}][value][]"])) { string[] split = request[$"filter[filters][{i}][filters][{j}][value][]"].Split(','); object[] objects = new object[split.Length]; for (int k = 0; k < split.Length; k++) { objects[k] = split[k]; } value = objects; } //.... //.... //.... //.... //first level filter @operator = request[$"filter[filters][{i}][operator]"]; if (!string.IsNullOrEmpty(request[$"filter[filters][{i}][value]"])) { value = request[$"filter[filters][{i}][value]"]; } if (!string.IsNullOrEmpty(request[$"filter[filters][{i}][value][]"])) { string[] split = request[$"filter[filters][{i}][value][]"].Split(','); object[] objects = new object[split.Length]; for (int k = 0; k < split.Length; k++) { objects[k] = split[k]; } value = objects; } //.... //....
Code yang sudah support:
//.... //.... @operator = request[$"filter[filters][{i}][filters][{j}][operator]"]; if (!string.IsNullOrEmpty(request[$"filter[filters][{i}][filters][{j}][value]"])) { value = request[$"filter[filters][{i}][filters][{j}][value]"]; } if (!string.IsNullOrEmpty(request[$"filter[filters][{i}][filters][{j}][value][]"])) { string[] split = request[$"filter[filters][{i}][filters][{j}][value][]"].Split(','); object[] objects = new object[split.Length]; for (int k = 0; k < split.Length; k++) { objects[k] = split[k]; } value = objects; } //tambahkan code di bawah ini if (!string.IsNullOrEmpty(request[$"filter[filters][{i}][filters][{j}][value][field]"])) { value = new FilterQuery( request[$"filter[filters][{i}][filters][{j}][value][field]"], FilterQuery.ParseOperator(request[$"filter[filters][{i}][filters][{j}][value][operator]"]), request[$"filter[filters][{i}][filters][{j}][value][value]"] ); } //.... //.... //.... //.... //first level filter @operator = request[$"filter[filters][{i}][operator]"]; if (!string.IsNullOrEmpty(request[$"filter[filters][{i}][value]"])) { value = request[$"filter[filters][{i}][value]"]; } if (!string.IsNullOrEmpty(request[$"filter[filters][{i}][value][]"])) { string[] split = request[$"filter[filters][{i}][value][]"].Split(','); object[] objects = new object[split.Length]; for (int k = 0; k < split.Length; k++) { objects[k] = split[k]; } value = objects; } //tambahkan code di bawah ini if (!string.IsNullOrEmpty(request[$"filter[filters][{i}][value][field]"])) { value = new FilterQuery( request[$"filter[filters][{i}][value][field]"], FilterQuery.ParseOperator(request[$"filter[filters][{i}][value][operator]"]), request[$"filter[filters][{i}][value][value]"] ); } //.... //....
Berikut contoh code implementasi pada javascript:
var dataSource = new kendo.data.DataSource(options); var filter = { field: "@nameof(Checksheet.MaintPackages)", operator: "@FilterOperator.Exists.ToDescription()", value: { field: "@($"{nameof(TaskList)}.{nameof(Discipline)}.{nameof(Plant)}.{nameof(Plant.CompanyId)}")", operator: "@FilterOperator.Equals.ToDescription()", value: parseInt("@(User?.CompanyId)") } }; datasource.query({ "filter": filter }); //atau datasource.filter(filter);