我在ASP.Net MVC中有一个jqGrid。
网格定义为:
$("#list").jqGrid({
url: '<%= Url.Action("History", "Farrier", new { id = ViewData["horseId"]}) %>',
editurl: '/Farrier/Add',
datatype: 'json',
mtype: 'GET',
colNames: ['horseId', 'date', 'notes'],
colModel: [
{ name: 'horseId', index: 'horseId', width: 250, align: 'left', editable:false, editrules: {edithidden: true}, hidden: true },
{ name: 'date', index: 'farrierDate', width: 250, align: 'left', editable:true },
{ name: 'notes', index: 'farrierNotes', width: 100, align: 'left', editable: true }
],
pager: jQuery('#pager'),
rowNum: 5,
rowList: [5, 10, 20, 50],
sortname: 'farrierDate',
sortorder: "DESC",
viewrecords: true
});
我希望能够做什么,在网格中添加一行,其中horseId是a)未显示或b)灰色。但是在保存时会传递给控制器。
它的设置方式是这个网格一次只有一个马id(它将存在于马的属性页面上。)
我唯一能够工作的时候是我可以编辑它,但是然后打开它让用户修改id,这不是一个好主意。
那么有什么方法可以在提交数据之前设置这个值吗?它确实作为一个变量在这个页面上存在,如果这有助于任何(并且我检查它不是null)。
由于
答案 0 :(得分:1)
我最终定义了一个带有ViewData值的jscript变量。然后将其用于editoption:defaultvalue属性。
这是我的剧本:
var defVal = '<%= ViewData["horseId"] %>';
$(function() {
$("#list").jqGrid({
url: '<%= Url.Action("History", "Farrier", new { id = ViewData["horseId"]}) %>',
editurl: '/Farrier/Add',
datatype: 'json',
mtype: 'GET',
colNames: ['horseId', 'date', 'notes'],
colModel: [
{ name: 'horseId', index: 'horseId', width: 250, align: 'left', editable: true, editoptions: { defaultValue:defVal}, hidden:true },
{ name: 'date', index: 'farrierDate', width: 100, align: 'left', formatter:'date', datefmt: 'mm/dd/yyyy', editable: true, editrules: {date:true} },
{ name: 'notes', index: 'farrierNotes', width: 500, align: 'left', editable: true, edittype: 'textarea' }
],
pager: jQuery('#pager'),
rowNum: 5,
rowList: [5, 10, 20, 50],
sortname: 'farrierDate',
sortorder: "DESC",
viewrecords: true,
width: 850
});
jQuery("#list").navGrid('#pager', { add: true });
});