editGridRow什么都不做

时间:2011-02-25 18:54:58

标签: jquery json jqgrid

我正在尝试设置jqGrid向表中添加一行,但editGridRow()没有做任何事情。网格显示并填充样本数据,“添加记录”按钮会触发事件(警报触发),但之后什么也没有。

也许我的网格规范缺少b / c我通过addRowData()使用存根数据填充它?我在这里感到困惑。

更新:editGridRow取决于我的HTML中未包含的CSS样式表。

HTML:

<table id="myGridTarget"><tr><td/></tr><table>
<div id="pager"/>
<fieldset>
  <input id="addRowButton" type="button" value="Add Row Data"/>
</fieldset>

设置网格和事件的代码:

jQuery(document).ready(function () {        
jQuery("#myGridTarget").jqGrid(pageData.gridData);
var starter_data_obj = {
                         'Col_1': 'first',
                         'Col_2': 'second',
                         'Col_3': 'third',
                         'Col_4': 'fourth',
                       };

jQuery("#myGridTarget").addRowData('row_1', starter_data_obj, 0);

jQuery("#addRowButton").click(function () {
    alert("here");
    jQuery("#myGridTarget").jqGrid('editGridRow', "new", {height: 280, reloadAfterSubmit:false});
        }
    );
    }
);

网格的规范,放置在对象pageData.gridData中。 (请注意,这些是python值,并且在传递给griData之前是jasonified。所以True变为true,对象属性不在引号中等。)

{
     'url': '',
     'datatype': 'json',
     'mtype': 'GET',
     'loadonce': True,
     'jsonReader': { 'repeatitems': False },        # potential js object issue
     'colNames': 
        [
         'Col_1',
         'Col_2',
         'Col_3',
         'Col_4',
        ],
     'colModel':
        [
         { 
           'name': 'Col_1', 
           'key': True,
           'width': 60,
           'align': "center",
           'hidden': False,
           'editable': True,
         },
         { 
           'name': 'Col_2',
           'width': 80,
           'sortable': False,
           'hidden': False, 
           'editable': True,
         },
         { 
           'name': 'Col_3',
           'width': 180,
           'sortable': False,
           'hidden': False, 
           'editable': True,
         },
         { 
           'name': 'Col_4',
           'width': 180,
           'sortable': False,
           'hidden': False,
           'editable': True,
         },
        ],
     'rowNum': 10,
     'rowList': [10, 20, 300],
     'pager': "#pager",
     'viewrecords': True,
     'gridview': True,
     'rownumbers': True,
     'height': 230,
     'caption': 'Caption goes here',
     'editurl': '',
     'sortorder': 'desc',
    }

2 个答案:

答案 0 :(得分:0)

editGridRow()功能取决于jqGrid CSS样式表。

一旦我将CSS样式表合并到我的HTML中,就会弹出附加数据的对话框。

答案 1 :(得分:0)

首先,您应该使用TrueFalse值来解决问题。您发布的数据不是pageData.gridData中使用的数据,这使得查找问题变得更加困难。如果你包含pageData.gridData的真实定义会更好。

pageData.gridData中,我们找不到url,但datatype: 'json'。你不能这样做。

接下来可能非常重要的问题是loadonce:true参数。在第一次加载后,它会将datatype'json'更改为'local'。表单编辑和函数editGridRow 不支持使用本地数据。因此,您可能会遇到editGridRow的问题,要使其正常运行,您必须在使用datatype之前将'json'切换为editGridRow。然后,如果您将使用reloadAfterSubmit:true,则会重新加载网格,datatype将被设置为'json'。我不玩这种设置组合,所以你必须自己做一些实验或检查grid.formedit.js的源代码。