我正在尝试设置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',
}
答案 0 :(得分:0)
editGridRow()功能取决于jqGrid CSS样式表。
一旦我将CSS样式表合并到我的HTML中,就会弹出附加数据的对话框。
答案 1 :(得分:0)
首先,您应该使用True
和False
值来解决问题。您发布的数据不是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的源代码。