动态禁用jqgrid列
问题描述:
我想在编辑时禁用少量列,但在通过navGrid添加进行添加时将启用这些列。 我使用下面的代码:动态禁用jqgrid列
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,你已经可以下载和使用。我计划很快发布版本。该版本有许多新功能。 the wiki article中描述了一个功能。它允许你定义editable
属性作为功能。在函数内部可以测试是否options.mode === "addForm"
并且只在这个情况下返回true。在options.mode === "editForm"
的情况下,您可以返回“已禁用”值,这与您在代码中执行的操作完全相同。
尝试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
}
@Oleg你可以检查它曾经? – Anand 2015-02-24 12:33:53