【发布时间】:2013-06-04 16:12:12
【问题描述】:
每一行在我们的数据库中都有一个与 jqgrid 行 id 不同的 id。保存行时如何发送此 lineid?
另外,有没有办法删除一行?
这是我目前的代码:
var mydata = [
{
lineItemId: "785",
productSku:"n123",
productName:"hello there",
pieces:"123",
value:"23.00",
line:"123"
}
,
{
lineItemId: "803",
productSku:"n1234",
productName:"hello there",
pieces:"123",
value:"23.00",
line:"123"
}
];
var colNames = ['SKU','Product Name', 'Pieces','Total Value','Line Number'];
var colModel = [
{name:'productSku', index:'productSku', width:10, sorttype: 'text', editable:true},
{name:'productName', index:'productName', width:60, editable:true},
{name:'pieces', index:'pieces', width:10, sorttype: 'int', editable:true, formatter: 'integer'},
{name:'value', index:'value', width:10, sorttype: 'int', editable:true, formatter: 'number'},
{name:'line', index:'line', width:10, sorttype: 'int', editable:true, formatter: 'integer', formatoptions:{thousandsSeparator: ""}}
];
initOrdersJqGrid("orderContent", mydata, '<xsl:value-of select="$datapath/OrderId"/>', colNames, colModel, "sku", "desc");
var orderLineOptions = {
keys: true,
aftersavefunc: function (rowid, response, options) {
// only update page if orderis is nil i.e. a new order
if($('#orderidlabel').text() == "") {
log('saving order line item from order with no id yet.');
var dummy = $('<div />').html(response.responseText);
var id = dummy.find('#orderId').val();
$('#orderidlabel').text(id);
$('#orderId').val(id);
$('button[value="Save Order"]').trigger('click');
}
}
}
function initOrdersJqGrid(id, data, orderid, colNames, colModel, defaultSortColumn, defaultSortOrder) {
$("#" + id + "Table")
.jqGrid({
datatype: "local",
data: data,
colNames: colNames,
colModel: colModel,
localReader: { id: "lineItemId"},
pager: '#' + id + 'Pager',
autowidth: true,
gridview: true,
autoencode: true,
height: "auto",
forceFit: true,
shrinkToFit: true, //Width of columns should be expressed in integers which add to 100
sortname: defaultSortColumn,
sortorder: defaultSortOrder,
url: "fs/servlet/CS",
editurl: "CS?action=com.agistix.webinterface.controllers.OrderIC,saveLineItems&orderId=" + orderid
})
.jqGrid('navGrid',"#" + id + "Pager",{edit:false,add:false,del:false,search: false, refresh: false})
.jqGrid('inlineNav',"#" + id + "Pager", { addParams: { addRowParams: orderLineOptions }, editParams: orderLineOptions});
}
【问题讨论】:
-
rowid 问题的原因通常是网格中的数据填充错误。您能否将
colModel与作为本机数据库ID 的列的描述一起使用?您能否包括您使用的data的示例(一行就足够了)?奇怪的是你用datatype: "local"和数据库返回的数据。 -
嗨@Oleg,我已经用更多代码更新了这个问题。我想为每一行使用的 id 在 xml 中返回:
-
抱歉,您为
mydata发布了绝对错误的数据。甚至 JavaScript 片段的语法也是错误的。如果您使用 XSL 生成数据,您应该发布 resulting 数据。此外,colModel不包含任何列的key: true。所以你应该在数据id属性中包含来自数据库的id值(例如来自LineItemId的值)。 -
我更新了代码 sn-p 以显示生成的 mydata 数据。我相信语法是正确的并且有效。
-
@Oleg - 如果您能举例说明如何为每一行使用数据库中的 id,我将不胜感激。 jqgrid 的文档似乎很难理解。