动态禁用 jqgrid 列
Dynamically disable jqgrid column
我想在编辑时禁用几列,但这些列将在通过 navGrid 添加添加时启用。
我正在使用以下代码:
colModel: [
{ name: 'Menu_Key_Nm', index: 'Menu_Key_Nm', align: 'left', width: 200, sortable: false, editable: true, editrules: { required: true } },
{ name: 'Menu_Display_Nm', index: 'Menu_Display_Nm', align: 'left', width: 200, sortable: false, editable: true, editrules: { required: true } },
{ name: 'Category', index: 'Category', align: 'left', width: 200, sortable: false, editable: true, editrules: { required: true }, edittype: 'select', editoptions: { dataUrl: '@Url.Action("GetCategoryList", "Admin")'} },
]
在 navGrid 编辑选项中,我正在编写以下代码:
//edit
{
beforeShowForm: function (form) {
$("#tr_Menu_Key_Nm").attr("disabled", "true");
$('#tr_Category').attr("disabled", "true");
}
url: '@Url.Action("Update")',
closeAfterEdit: true
},
//Add option
{
beforeShowForm: function (form) {
$("#tr_Menu_Key_Nm").attr("disabled", "false");
$('#tr_Category').attr("disabled", "false");
}
}
但是我在编辑后添加时禁用了上面的列。
任何帮助深表感谢。提前致谢。
首先,您应该修复代码并使用 .prop("disabled", true)
或 .prop("disabled", false)
而不是 .attr("disabled", "true")
和 .attr("disabled", "false")
。如果您使用非常旧的 jQuery 版本,则可以使用 attr
,但在这种情况下,值应为 .attr("disabled", "disabled")
和 .removeAttr("disabled")
.
顺便说一句,我现在正在开发新版本的free jqGrid which you can already download and use. I plan release the version very soon. The version have many new features. One for the features is described in the wiki article。它允许您将editable
属性定义为函数。在函数内部,您可以测试 options.mode === "addForm"
是否且仅在 return 情况下为真。在 options.mode === "editForm"
的情况下,您可以 return "disabled" 值,这将与您在代码中所做的完全相同。
尝试the demo。它显示
和
某些列的editable
属性定义为editable: editableInAddForm
,其中函数editableInAddForm
如下所示
editableInAddForm = function (options) {
if (options.mode === "addForm") {
return true;
}
if (options.mode === "editForm") {
return "disabled";
}
return false; // don't allows editing in other editing modes
}
我想在编辑时禁用几列,但这些列将在通过 navGrid 添加添加时启用。 我正在使用以下代码:
colModel: [
{ name: 'Menu_Key_Nm', index: 'Menu_Key_Nm', align: 'left', width: 200, sortable: false, editable: true, editrules: { required: true } },
{ name: 'Menu_Display_Nm', index: 'Menu_Display_Nm', align: 'left', width: 200, sortable: false, editable: true, editrules: { required: true } },
{ name: 'Category', index: 'Category', align: 'left', width: 200, sortable: false, editable: true, editrules: { required: true }, edittype: 'select', editoptions: { dataUrl: '@Url.Action("GetCategoryList", "Admin")'} },
]
在 navGrid 编辑选项中,我正在编写以下代码:
//edit
{
beforeShowForm: function (form) {
$("#tr_Menu_Key_Nm").attr("disabled", "true");
$('#tr_Category').attr("disabled", "true");
}
url: '@Url.Action("Update")',
closeAfterEdit: true
},
//Add option
{
beforeShowForm: function (form) {
$("#tr_Menu_Key_Nm").attr("disabled", "false");
$('#tr_Category').attr("disabled", "false");
}
}
但是我在编辑后添加时禁用了上面的列。 任何帮助深表感谢。提前致谢。
首先,您应该修复代码并使用 .prop("disabled", true)
或 .prop("disabled", false)
而不是 .attr("disabled", "true")
和 .attr("disabled", "false")
。如果您使用非常旧的 jQuery 版本,则可以使用 attr
,但在这种情况下,值应为 .attr("disabled", "disabled")
和 .removeAttr("disabled")
.
顺便说一句,我现在正在开发新版本的free jqGrid which you can already download and use. I plan release the version very soon. The version have many new features. One for the features is described in the wiki article。它允许您将editable
属性定义为函数。在函数内部,您可以测试 options.mode === "addForm"
是否且仅在 return 情况下为真。在 options.mode === "editForm"
的情况下,您可以 return "disabled" 值,这将与您在代码中所做的完全相同。
尝试the demo。它显示
和
某些列的editable
属性定义为editable: editableInAddForm
,其中函数editableInAddForm
如下所示
editableInAddForm = function (options) {
if (options.mode === "addForm") {
return true;
}
if (options.mode === "editForm") {
return "disabled";
}
return false; // don't allows editing in other editing modes
}