我目前正在使用MVC来设置jqGrid。我试图为用户角色创建一个表。一列应该有用户,一列应该具有该角色。不太复杂。但是,目前,它们被格式化为字符串,并且查看长ID字符串并不是非常有用。所以我希望将Ids格式化为它们对应的用户名和角色名称,但我仍然希望底层值是UserId和RoleId,以便于编辑和更改。目前,我有这样的情况,当你去编辑它们时,会出现一个下拉框,它将UserId格式化为UserName,同时保留UserId的值,但我不知道如何让它在我和#39;我没有编辑...
这是下拉框的代码。
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();
}
}
答案 0 :(得分:0)
我们使用的解决方案是将CustomFormatter添加到该列。这是相关的代码。
在后面的代码中创建网格时,您需要添加如下所示的CustomFormatter。
var jqGrid = new JQGrid
{
Columns =
{
new JQGridColumn
{
HeaderText = "Role"
, DataField = "RoleId"
, Formatter = new CustomFormatter { FormatterFunction = "RoleFormatter" }
}
}
};
然后你需要在JS中编写RoleFormatter函数并将其添加到你的视图中。
<script>
function RoleFormatter(cellValue, options, rowObject) {
if(cellValue == '1') return 'Admin'
if(cellValue == '2') return 'Client'
if(cellValue == '3') return 'Lucky'
return cellValue;
}
</script>
就是这样。该列显示实际设置为RoleId时的Formatter返回值。