#jquery #asp.net-mvc #jqgrid #asp.net-mvc-5
#jquery #asp.net-mvc #jqgrid #asp.net-mvc-5
Вопрос:
В настоящее время я использую MVC для настройки jqGrid. Я пытаюсь создать таблицу для ролей пользователей. В одном столбце должен быть пользователь, в одном столбце должна быть роль. Не слишком сложно. Однако в настоящее время они отформатированы как строки, и просмотр длинных строк идентификаторов не очень полезен. Итак, я хочу, чтобы идентификаторы были отформатированы как имя пользователя и имя роли, которым они соответствуют, но я все равно хочу, чтобы базовым значением были userId и RoleId, чтобы их было легко редактировать и вносить изменения. В настоящее время у меня это есть, поэтому, когда вы переходите к их редактированию, появится выпадающее окно, которое форматирует идентификатор пользователя как имя пользователя, сохраняя при этом значение идентификатора пользователя, но я не знаю, как сделать так, чтобы оно отображалось таким образом, когда я не редактирую…
Вот код для выпадающего списка.
private void SetUpUserNameColumn(JQGrid userRoleGrid)
{
// setup the grid search criteria for the columns
JQGridColumn userIdColumn = userRoleGrid.Columns.Find(c => c.DataField == "UserId");
userIdColumn.Editable = true;
userIdColumn.EditType = EditType.DropDown;
// Populate the search dropdown only on initial request, in order to optimize performance
if (userRoleGrid.AjaxCallBackMode == AjaxCallBackMode.RequestData)
{
var db = new ApplicationDbContext();
var editList = from user in db.Users
select new SelectListItem
{
Text = user.UserName,
Value = user.UserId
};
userIdColumn.EditList = editList.ToList();
}
}
Ответ №1:
Решение, которое мы используем, заключается в добавлении пользовательского форматирования к этому столбцу. Вот соответствующий код для этого.
-
При создании вашей сетки в коде вы захотите добавить пользовательский формат, как показано ниже.
var jqGrid = new JQGrid { Columns = { new JQGridColumn { HeaderText = "Role" , DataField = "RoleId" , Formatter = new CustomFormatter { FormatterFunction = "RoleFormatter" } } } };
-
Затем вам нужно будет написать функцию RoleFormatter на JS и добавить ее в свое представление.
<script> function RoleFormatter(cellValue, options, rowObject) { if(cellValue == '1') return 'Admin' if(cellValue == '2') return 'Client' if(cellValue == '3') return 'Lucky' return cellValue; } </script>
И это все. В столбце отображается возвращаемое значение форматирования, при этом фактически задается идентификатор роли.