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);