jqgrid INLINEAV-自定义行id和删除

jqgrid INLINEAV-自定义行id和删除,jqgrid,jqgrid-inlinenav,Jqgrid,Jqgrid Inlinenav,每一行在我们的数据库中都有一个与jqgrid行id不同的id。保存行时如何发送此lineid 另外,是否有删除行的方法 这是我目前的代码: var mydata = [ { lineItemId: "785", productSku:"n123", productName:"hello there", pieces:"123

每一行在我们的数据库中都有一个与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});

    }
var mydata=[
{
lineItemId:“785”,
产品SKU:“n123”,
产品名称:“您好”,
作品:“123”,
值:“23.00”,
行:“123”
}
,
{
lineItemId:“803”,
产品SKU:“n1234”,
产品名称:“您好”,
作品:“123”,
值:“23.00”,
行:“123”
}               
];    
var colNames=['SKU'、'Product Name'、'Pieces'、'Total Value'、'Line Number'];
var colModel=[
{名称:'productSku',索引:'productSku',宽度:10,排序类型:'text',可编辑:true},
{名称:'productName',索引:'productName',宽度:60,可编辑:true},
{name:'pieces',index:'pieces',width:10,sorttype:'int',editable:true,formatter:'integer'},
{名称:'value',索引:'value',宽度:10,排序类型:'int',可编辑:true,格式化程序:'number'},
{名称:'line',索引:'line',宽度:10,排序类型:'int',可编辑:true,格式化程序:'integer',格式化选项:{thousandsSeparator:''}
];
initOrdersJqGrid(“orderContent”,mydata,,,colNames,colModel,sku,desc”);
var orderLineOptions={
凯斯:没错,
aftersavefunc:函数(rowid、响应、选项){
//仅在orderis为零(即新订单)时更新页面
如果($('#orderidlabel')。text()=“”){
日志('正在保存订单中尚未具有id的订单行项目');
var dummy=$('').html(response.responseText);
var id=dummy.find('#orderId').val();
$('#orderidlabel')。文本(id);
$('#orderId').val(id);
$('button[value=“Save Order”]”)。触发器('click');
}
}
}
函数initOrdersJqGrid(id、数据、orderid、colNames、colModel、defaultSortColumn、defaultSortOrder){
$(“#”+id+“表”)
.jqGrid({
数据类型:“本地”,
数据:数据,
colNames:colNames,
colModel:colModel,
localReader:{id:“lineItemId”},
寻呼机:“#”+id+“寻呼机”,
自动宽度:正确,
gridview:没错,
自动编码:正确,
高度:“自动”,
forceFit:对,
shrinkToFit:true,//列的宽度应该用加到100的整数表示
sortname:defaultSortColumn,
排序器:默认排序器,
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},editparms:orderLineOptions});
}

如果使用
数据类型:“local”
,则由
数据
参数指定的输入数据数组中的项应具有附加的属性
id
,该属性指定网格每行(
)的
id
属性的值。如果希望使用rowsid属性的另一个名称,可以使用
localReader
来指定它。例如
localReader:{id:“id”}
选项通知jqGrid从
id
属性获取行(rowids)的
id
属性的值。在这种情况下,数据项应如下所示

{
    Id: 76453
    productSku:"n123",
    productName:"hello there",
    pieces:"123",
    value:"23.00",
    line:"123"
}
id
属性的值必须是唯一的

如果网格中已有某列包含某个数据库表中的id,则无需使用
id
属性添加相同的值。相反,您只需在列中输入
key:true
。jqGrid只允许在
colModel
的一项中放置
key:true

关于行ID的另一个常见问题是需要了解。如果您需要将多个网格作为一个网格放置在一个页面上,或者如果您需要使用子网格作为网格,那么您仍然会遇到一个问题。数据库中的ID在一个表中是唯一的,但在多个表中可以有相同的ID。另一方面,HTML元素的ID(包括用于行的
元素)在整个页面上必须是唯一的


要解决此问题,可以使用jqGrid的
idPrefix
选项。例如,数据库中有
INT-IDENTITY
列作为数据库中表的主键。在这种情况下,您将使用整数作为rowids的本机id。例如,第一个网格中的值可以是
3
5
40
。通过使用
idPrefix:“g1_”
分配给行(到
元素)的ID将是
“g1_3”
“g1_5”
“g1_40”
。因此,对第一个网格使用
idPrefix:“g1_”
和另一个值,如
idPrefix:“g2_”
,可以解决潜在id重复的问题。如果jqGrid将一些数据发送到服务器(例如,如果您在网格中使用编辑),则jqGrid会自动从rowid中删除前缀
idPrefix
,这一点很重要。可以区分“id”和“rowid”名称。“rowids”将始终带有前缀。您可以使用
$.jgrid.stripPref
函数来剪切前缀。

rowid问题的解决通常是网格中的数据填充错误。您能否将
colModel
与本机数据库id列的描述一起使用?您是否可以包括您使用的
数据的示例(一行就足够了)?奇怪的是,你用
数据类型:“local”
处理从数据库返回的数据。嗨@Oleg,我用更多的代码更新了这个问题。我要用于每行的id