#c# #asp.net-mvc #grid.mvc
#c# #asp.net-mvc #grid.mvc
Вопрос:
Я использую Grid.Mvc в своем проекте. Я хочу создать необязательные свойства сетки пользователем. Например, один из пользователей хочет видеть заголовок сетки как «Схема», другой пользователь хочет видеть как «Имя схемы». Я буду управлять им из базы данных.
Итак, мне нужно создать приведенный ниже код из контроллера и записать на cshtml. Как я могу это сделать?
@Html.Grid(Model).Columns(columns =>
{
columns.Add(c => c.SchemeID).Titled("Scheme ID").Filterable(true);
columns.Add(c => c.SchemeName).Titled("SchemeName").Filterable(true);
columns.Add()
.Encoded(false)
.Sanitized(false)
.SetWidth(30)
.RenderValueAs(o => Html.ActionLink("Edit", "Edit", new { id = o.SchemeID }));
}).WithPaging(10).Sortable(true)
Ответ №1:
Вам не нужно создавать сетку из контроллера, все, что вам нужно, это сохранить пользовательские настройки и передать их в view model, а затем использовать их в view для создания сетки.
пример: Допустим, вы создали класс с именем UserGridSettings
, у которого есть свойство с именем SchemaColumnTitle
, вы можете добавить к нему все, что захотите.
В вашей модели представления вы добавите свойство типа UserGridSettings
и будете использовать его в представлении, как показано ниже:
@Html.Grid(Model).Columns(columns =>
{
columns.Add(c => c.SchemeID).Titled("Scheme ID").Filterable(true);
columns.Add(c => c.SchemeName).Titled(Model.GridSettings.SchemaColumnTitle).Filterable(true);
columns.Add()
.Encoded(false)
.Sanitized(false)
.SetWidth(30)
.RenderValueAs(o => Html.ActionLink("Edit", "Edit", new { id = o.SchemeID }));
}).WithPaging(10).Sortable(true)
Конечно, вы можете создать модель со списком UserGridSettings
и внутри @Html.Grid
, вы можете выполнять итерации по этому списку и динамически создавать столбцы.