在ASP.Net MVC上编辑时传递隐藏的jqGrid值

时间:2010-05-22 04:24:05

标签: jquery asp.net-mvc jqgrid-asp.net

我在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)。

由于

1 个答案:

答案 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 });
    });