У меня есть две страницы в моем веб-приложении.Тот, который имеет блок-схему для элемента с несколькими различными статусами.Другой - это сетка кендо.Когда пользователь щелкает состояние на блок-схеме, я хотел бы перенести его в сетку Kendo с предварительно отфильтрованной сеткой.
В настоящее время я считаю, что лучшим способом является фильтрация на .DataSource, но из того, что я вижу, я могу фильтровать состояние только с помощью жестко закодированной строки.Я хотел бы иметь возможность передавать значение, равное состоянию, которое выбирает пользователь.Жестко закодированная строка будет фильтровать только один раз каждый раз
Это начало сетки.В промежутке между "" я бы хотел указать значение, но я не могу этого сделать.
@(Html.Kendo().Grid<Item>()
.Name("grid").Scrollable(c => c.Enabled(true).Height(1000))
.DataSource(dataSource => dataSource
.Ajax()
.Filter(f=>f.Add(a=>a.Status).IsEqualTo(""))
.Read(read => read.Action("Products_Read",
"Controller"))
.PageSize(20)
)
Это значок asp-action
, который пользователь нажимает, чтобы получить все элементы, которыеСостояние элементов для возврата.
<a asp-action="DeviceLogWIP" asp-controller="Controller" asp-route-status="Items to Return" id="itemsToReturn" class="fa fa-barcode fa-3x dashboard-icons"><span class="badge badge-info dashboard-badges">@Model.Item.Where(e => e.Status == "Items to Return").Count()</span></a>
Это контроллер, который у меня был изначально, когда я использовал обычную таблицу HTML.
public ActionResult DeviceLogWIP(string status)
{
ViewBag.Title = "Device Log - WIP";
ViewBag.Status = status;
List<Item> items = new List<Item>();
if (status != "" && status != null)
{
items = _itemService.GetItems().Where(c => c.Status == status).ToList();
}
else
{
items= _itemService.GetItems().ToList();
}
return View(new DeviceLogViewModel()
{
Items= items,
Status = status
});
}
В настоящее время сеточные фильтры ничего не фильтруют.Но они будут предварительно фильтровать что-либо между "" в .IsEqualTo (""))
Как лучше всего решить эту проблему?
Редактировать: я смог решить эту проблемупроблема, передавая значение статуса в ViewBag.Теперь он читает
.DataSource(dataSource => dataSource
.Ajax()
.Filter(f=>f.Add(a=>a.Status).IsEqualTo(ViewBag.Status))
.Read(read => read.Action("Products_Read", "Controller"))
.PageSize(20)
)