Я хочу заполнить кендо-сетку списком сотрудников. Когда я отправляю список сотрудников непосредственно в сетку, сетка заполняется. Когда я немного манипулирую списком, сетка пуста. Класс employee имеет поле bool «selected», которое мне нужно манипулировать. При остановке контроллера в отладчике в обоих случаях список насчитывает 600 сотрудников, поэтому данные есть.Пустая сеть kendo-ui
Вот код, с точки зрения (я даже не привязка к свойству «выбранной» - подумал, что может быть проблема)
@(Html.Kendo().Grid<TRS.MVC.Models.SelectEmployeeModel>()
.Name("gridEmployee")
.HtmlAttributes(new { style = "height: 300px" })
.Columns(columns =>
{
columns.Bound(p => p.CompanyCode).Width(100);
columns.Bound(p => p.EmployeeCode).Width(100);
columns.Bound(p => p.EmployeeName).Width(100);
})
.Selectable(selectable => selectable
.Mode(GridSelectionMode.Single))
.Navigatable()
.Scrollable()
.DataSource(dataSource => dataSource
.Ajax()
.Read(read => read.Action("GetEmployees", "EmployeeSelectDlg"))
)
)
Вот код, который работает
public ActionResult GetEmployees([DataSourceRequest]DataSourceRequest request)
{
List<SelectEmployeeModel> employeesForGrid;
employeesForGrid = (from e in trs.Employees select e).ToList();
return Json(employeesForGrid.ToDataSourceResult(request));
}
И код, который не работает (сетка пуста). В обоих случаях при остановке в отладчике «employeesForGrid» имеет 600 элементов.
public ActionResult GetEmployees([DataSourceRequest]DataSourceRequest request)
{
List<Employee> jobEmployees;
List<SelectEmployeeModel> employeesForGrid;
Job selectedJob = (from j in trs.Jobs.Include("JobEmployees") where j.JobKey == selectedJobKey select j).First();
if (selectedJob.JobEmployees.Any())
jobEmployees = (from j in selectedJob.JobEmployees select j).Select(eq => eq.Employee).ToList();
else
jobEmployees = new List<Employee>();
employeesForGrid = (from e in trs.Employees select new SelectEmployeeModel() { Employee = e, Selected = jobEmployees.Contains(e) }).ToList();
return Json(employeesForGrid.ToDataSourceResult(request));
}
Нет сообщений об ошибках только в пустой сетке.
Извините, я должен был уточнить, что код для представления был изменен для представления данных, которые были возвращены. Сотрудник для кода контроллера, который работал, и EmployeeSelectModel для кода, который этого не сделал. Я попробовал ваше предложение, но все равно никаких данных. EmployeeSelectModel предоставляет свойства CompanyCode, EmployeeCode и EmployeeName модели сотрудника, которые передаются конструктору. – Bob