MVCJqGrid复选框列禁用

时间:2014-12-09 07:53:12

标签: jqgrid asp.net-mvc-5 mvcjqgrid

我在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,并尝试了其他一些操作但列中的复选框始终保持启用状态。如何在页面加载时将列中的复选框显示为已禁用?

1 个答案:

答案 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>

没有测试代码,但它应该工作;)