Asp.net mvc 3 编辑/添加表单上的mvc3 jqgrid只读字段
我有一个使用表单编辑的jqGrid。我希望某些字段在“编辑”模式下是只读的,而不是在“添加”模式下。我已经尝试了我在别处找到的一些建议来解决这个问题(见下面的例子),但仍然无法让它发挥作用 如果有人能帮助我,我将不胜感激 在下面的表格中,我试图在“编辑”模式下将“LogonName”设置为只读,而不是在“添加”模式下Asp.net mvc 3 编辑/添加表单上的mvc3 jqgrid只读字段,asp.net-mvc-3,jqgrid,readonly,Asp.net Mvc 3,Jqgrid,Readonly,我有一个使用表单编辑的jqGrid。我希望某些字段在“编辑”模式下是只读的,而不是在“添加”模式下。我已经尝试了我在别处找到的一些建议来解决这个问题(见下面的例子),但仍然无法让它发挥作用 如果有人能帮助我,我将不胜感激 在下面的表格中,我试图在“编辑”模式下将“LogonName”设置为只读,而不是在“添加”模式下 $('#jpgCustomers').jqGrid({ url: '@Url.Action("Customers")', datatype: 'json',
$('#jpgCustomers').jqGrid({
url: '@Url.Action("Customers")',
datatype: 'json',
mtype: 'POST',
colNames: ['Name', 'FullName', 'Description'],
colModel: [
{ name: 'LogonName', index: 'LogonName', align: 'left', width:80, editable:true, search:true, stype:'text',editrules:{required:true}},
{ name: 'FullName', index: 'FullName', align: 'left',width: 200, editable:true, search:true, stype:'text',editrules:{required:true}},
{ name: 'Description', index: 'Description', align: 'left', width: 300, editable:true, search:true, stype:'text'}
]
//..
$("#jpgCustomers").jqGrid('navGrid', '#jpgpCustomers',
{ add: true, del: true, edit: true, search: false},
//edit form
{ width: '500',
editCaption: 'Edit Customer',
url: '@Url.Action("EditCustomer")',
reloadAfterSubmit: true,
closeAfterEdit: true,
//always start from a new form
recreateForm: true,
beforeShowForm: function(form) {
//center the edit dialog on screen
var dlgDiv = $("#editmod" + jpgCustomers.id);
CenterDialog(dlgDiv);
$("#jpgCustomers").jqGrid('setColProp','LogonName',{editoptions: {readonly:'readonly'}});
}
},
//Add form
{ width: '500',
addCaption: 'Add Customer',
url: '@Url.Action("CreateCustomer")',
reloadAfterSubmit: true,
closeAfterEdit: true,
beforeShowForm: function(form) {
var dlgDiv = $("#editmod" + jpgCustomers.id);
CenterDialog(dlgDiv);
$("#jpgCustomers").jqGrid('setColProp','LogonName',{editoptions: {readonly:false}});
}
},
//Delete form
{ width: '250',
url: '@Url.Action("DeleteCustomer")',
beforeShowForm: function(form) {
//center the delete dialog on screen
var dlgDiv = $("#delmod" + jpgCustomers.id);
CenterDialog(dlgDiv);
//change the Delete confirmation message
var sel_id = $("#jpgCustomers").jqGrid('getGridParam','selrow')
$("td.delmsg", form).html("Delete User <b>" + $("#jpgCustomers").jqGrid('getCell', sel_id,'LogonName') + "</b>?");
}
}
);
$('jpgccustomers').jqGrid({
url:“@url.Action(“客户”)”,
数据类型:“json”,
mtype:“POST”,
colNames:['Name','FullName','Description'],
colModel:[
{name:'LogonName',index:'LogonName',align:'left',width:80,editable:true,search:true,stype:'text',editrules:{required:true},
{name:'FullName',index:'FullName',align:'left',width:200,editable:true,search:true,stype:'text',editrules:{required:true},
{name:'Description',index:'Description',align:'left',width:300,editable:true,search:true,stype:'text'}
]
//..
$(“#jpgccustomers”).jqGrid(‘navGrid’,‘#jpgpCustomers’,
{add:true,del:true,edit:true,search:false},
//编辑表格
{宽度:'500',
editCaption:“编辑客户”,
url:“@url.Action”(“EditCustomer”),
reloadAfterSubmit:对,
closeAfterEdit:true,
//总是从新的形式开始
再现形式:正确,
beforeShowForm:函数(形式){
//在屏幕上居中显示编辑对话框
var dlgDiv=$(“#editmod”+jpgccustomers.id);
CenterDialog(dlgDiv);
$(“#jpgCustomers”).jqGrid('setColProp','LogonName',{editoptions:{readonly:'readonly'}});
}
},
//添加表单
{宽度:'500',
addCaption:“添加客户”,
url:“@url.Action(“CreateCustomer”)”,
reloadAfterSubmit:对,
closeAfterEdit:true,
beforeShowForm:函数(形式){
var dlgDiv=$(“#editmod”+jpgccustomers.id);
CenterDialog(dlgDiv);
$(“#jpgCustomers”).jqGrid('setColProp','LogonName',{editoptions:{readonly:false}});
}
},
//删除表格
{宽度:'250',
url:“@url.Action(“DeleteCustomer”)”,
beforeShowForm:函数(形式){
//在屏幕上居中显示删除对话框
var dlgDiv=$(“#delmod”+jpgccustomers.id);
CenterDialog(dlgDiv);
//更改删除确认消息
var sel_id=$(“#jpgccustomers”).jqGrid('getGridParam','selrow'))
$(“td.delmsg”,form).html(“删除用户”+$(“#jpgccustomers”).jqGrid('getCell',sel_id,'LogonName')+“?”;
}
}
);
好的,经过数小时的测试和重新测试,并尝试了各种方法,我终于找到了解决方案
我对上述代码做了几处更改,但不完全确定哪一处是问题的主要答案,但以下是我所做的:
1)将对“SetColProp”的调用从beforeShowForm移到beforeInitData函数中
2)将beforeInitData放在beforeShowForm之前-我不认为这实际上有什么区别,但它是有效的,所以我把它放在那里
3)在“添加表单”部分包含了一个“重新创建表单”:true(我在“编辑”部分已经有了一个)
我认为第1点和第3点起了作用,但我不能告诉你为什么
这是工作导航网格部分,由问题更改而来:
$("#jpgCustomers").jqGrid('navGrid', '#jpgpCustomers',
{ add: true, del: true, edit: true, search: false},
//edit form
{ width: '500',
editCaption: 'Edit Customer',
url: '@Url.Action("EditCustomer")',
reloadAfterSubmit: true,
closeAfterEdit: true,
//always start from a new form
recreateForm: true,
beforeInitData: function(form) {
$("#jpgCustomers").jqGrid('setColProp','LogonName',{editoptions: {readonly:'readonly'}});
},
beforeShowForm: function(form) {
//center the edit dialog on screen
var dlgDiv = $("#editmod" + jpgCustomers.id);
CenterDialog(dlgDiv);
}
},
//Add form
{ width: '500',
addCaption: 'Add Customer',
url: '@Url.Action("CreateCustomer")',
reloadAfterSubmit: true,
closeAfterEdit: true,
recreateForm: true,
beforeInitData: function(form) {
$("#jpgCustomers").jqGrid('setColProp','LogonName',{editoptions: {readonly:false}});
},
beforeShowForm: function(form) {
var dlgDiv = $("#editmod" + jpgCustomers.id);
CenterDialog(dlgDiv);
}
},
//Delete form
{ width: '250',
url: '@Url.Action("DeleteCustomer")',
beforeShowForm: function(form) {
//center the delete dialog on screen
var dlgDiv = $("#delmod" + jpgCustomers.id);
CenterDialog(dlgDiv);
//change the Delete confirmation message
var sel_id = $("#jpgCustomers").jqGrid('getGridParam','selrow')
$("td.delmsg", form).html("Delete User <b>" + $("#jpgCustomers").jqGrid('getCell', sel_id,'LogonName') + "</b>?");
}
}
$(“#jpgccustomers”).jqGrid('navGrid','#jpgpCustomers',
{add:true,del:true,edit:true,search:false},
//编辑表格
{宽度:'500',
editCaption:“编辑客户”,
url:“@url.Action”(“EditCustomer”),
reloadAfterSubmit:对,
closeAfterEdit:true,
//总是从新的形式开始
再现形式:正确,
beforeInitData:函数(表单){
$(“#jpgCustomers”).jqGrid('setColProp','LogonName',{editoptions:{readonly:'readonly'}});
},
beforeShowForm:函数(形式){
//在屏幕上居中显示编辑对话框
var dlgDiv=$(“#editmod”+jpgccustomers.id);
CenterDialog(dlgDiv);
}
},
//添加表单
{宽度:'500',
addCaption:“添加客户”,
url:“@url.Action(“CreateCustomer”)”,
reloadAfterSubmit:对,
closeAfterEdit:true,
再现形式:正确,
beforeInitData:函数(表单){
$(“#jpgCustomers”).jqGrid('setColProp','LogonName',{editoptions:{readonly:false}});
},
beforeShowForm:函数(形式){
var dlgDiv=$(“#editmod”+jpgccustomers.id);
CenterDialog(dlgDiv);
}
},
//删除表格
{宽度:'250',
url:“@url.Action(“DeleteCustomer”)”,
beforeShowForm:函数(形式){
//在屏幕上居中显示删除对话框
var dlgDiv=$(“#delmod”+jpgccustomers.id);
CenterDialog(dlgDiv);
//更改删除确认消息
var sel_id=$(“#jpgccustomers”).jqGrid('getGridParam','selrow'))
$(“td.delmsg”,form).html(“删除用户”+$(“#jpgccustomers”).jqGrid('getCell',sel_id,'LogonName')+“?”;
}
}
))