我在mvc5项目中使用JqGrid和MVCJqGrid Html包装器。我正在使用的MVCJqGrid版本是1.0.15。我在cshtml文件中有以下代码,以便在页面中创建网格。
@(Html.Grid("Contacts")
.SetCaption("Contacts")
.SetUrl(@Url.Action("Contacts", "Home"))
.SetAutoWidth(true)
.SetViewRecords(true)
.AddColumn(new Column("Name").SetAlign(Align.Left).SetEditable(false))
.AddColumn(new Column("IsPrimaryContact").SetAlign(Align.Center).SetFormatter(Formatters.Checkbox).SetLabel("Is Primary?"))
.AddColumn(new Column("Email").SetLabel("Email Address").SetFormatter(Formatters.Email))
.AddColumn(new Column("Handphone").SetAlign(Align.Right).SetFormatter(Formatters.Number))
.AddColumn(new Column("Office").SetAlign(Align.Right))
.AddColumn(new Column("Telephone").SetAlign(Align.Right))
.AddColumn(new Column("Other").SetAlign(Align.Right))
)
在上面的代码中,“IsPrimaryContact”是bool值,我将其显示为网格中的复选框列。页面加载时,所有列都显示为只读,即我无法编辑,但Checkbox列仍然可编辑,可以选中/取消选中列中的复选框。我希望复选框也被禁用,用户不应该更改其值。我已将SetEditable for Checkbox列添加为false,并尝试了其他一些操作但列中的复选框始终保持启用状态。如何在页面加载时将列中的复选框显示为已禁用?
答案 0 :(得分:0)
您可以使用自定义格式化程序,而不是使用标准格式化程序。您可以在http://mvcjqgrid.skaele.it/Home/Formatters
找到示例为列设置自定义格式化程序:
.AddColumn(new Column("IsPrimaryContact").SetAlign(Align.Center).SetCustomFormatter("displayCheckBox").SetLabel("Is Primary?"))
格式化程序功能
<script type="text/javascript">
function displayCheckBox(cellvalue, options, rowobject) {
return '<input type="checkbox" value="' + cellvalue + '" disabled="disabled">';
}
</script>
没有测试代码,但它应该工作;)