我有一个基本的jqgrid实现。
$('.fsJqGrid').jqGrid({
datatype: "local",
height: 175,
colNames: ['FeatureId', 'Name', ''],
colModel: [
{ name: 'FeatureId', index: 'FeatureId', width: 75, align: 'left',
sorttype: "int", hidden: true, key: true },
{ name: 'Name', index: 'Name', width: 180 },
{ name: 'tools', index: 'tools', width: 150}
]
});
function FeatGridAddRow(jqTableName, feature) {
///<summary>Adds a row of data to a Feature JQGrid</summary>
var RowId = $("#" + jqTableName).jqGrid('getGridParam', 'reccount');
feature.tools = 'MyToolHtml';
$("#" + jqTableName).jqGrid('addRowData', RowId, feature); //jqgrid
} //function
function FeatGridUpdateRow(featureId, newName) {
///<summary>Updates JQGrid data row</summary>
//I need to find the rowId, based on the featureId parameter
var rowId = 0;
//update grid with new data
$("#tabFS0").jqGrid('setRowData' , rowId , {Name: newName});
} //function
我希望能够更新一行数据,但需要知道rowId才能这样做。
我拥有的唯一数据是键值(featureId)。
所以我正在寻找一种基于我知道的主键值找到rowId的方法。
我一直在查看jqgrid文档,我没有看到这样做的明显方法。
所以,在add函数中;
var RowId = $("#" + jqTableName).jqGrid('getGridParam', 'reccount');
$("#" + jqTableName).jqGrid('addRowData', RowId, feature);
变为
$("#" + jqTableName).jqGrid('addRowData', feature.FeatureId, feature);
答案 0 :(得分:3)
由于您使用FeatureId
定义了key:true
,因此每行的ID将与FeatureId
列中的值相同。如果您没有t need it you should remove
键:true`设置。
您没有发布您使用的完整代码示例,因此我认为您在jqGrid中填充数据的代码位置存在问题。我没有记录你的情景。从哪里收到要填写网格的数据?你一次只收到一行吗?您是从服务器,本地数据源还是用户输入获取日期的?填充行的最有效方法是使用jqGrid的data
参数(请参阅this answer)。此外,jqGrid有很多可能按照ajax请求填充网格。
为了能够回答有关编辑数据的主要问题,您应该描述上下文。您是否需要用户能够修改数据?然后,您可以使用内联编辑,表单编辑或单元格编辑(请参阅documentation和“行编辑”/“输入类型”和“实时数据操作”/“导航器”,选择行并单击导航器中的编辑按钮the official jqGrid demo)。如果要修改不是由用户更改的行,可以使用setRowData等函数。
因此,如果您解释更多应用程序的功能以及如何使用jqGrid,我可以为您提供更多参考资料。