1

各行には、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});

    }
4

1 に答える 1

2

使用する場合、パラメーターでdatatype: "local"指定された入力データの配列からのアイテムには、グリッドのすべての行 ( ) の属性の値を指定する追加のプロパティが必要です。rowid プロパティに別の名前を付けたい場合は、それを使用して指定できます。たとえば、プロパティから行の属性の値 (rowid) を取得するオプションを jqGrid に通知します。データの項目が次のようになる場合dataidid<tr>localReaderlocalReader: { id: "Id" }idId

{
    Id: 76453
    productSku:"n123",
    productName:"hello there",
    pieces:"123",
    value:"23.00",
    line:"123"
}

プロパティの値はid一意である必要があります。

データベース テーブルの ID を含むグリッドに既に列がある場合は、idプロパティに同じ値を追加する必要はありません。その代わりに、列に入れることができkey: trueます。jqGrid では、の1 つのアイテムkey: trueのみに配置できます。colModel

行の ID に関するもう 1 つの一般的な問題を理解することが重要です。ページに 1 つのグリッドとして複数を配置する必要がある場合、またはサブグリッドをグリッドとして使用する必要がある場合でも、1 つの問題が発生する可能性があります。データベース内の ID はテーブル内で一意ですが複数のテーブルで同じ ID を持つことができます。一方、HTML 要素 (<tr>行に使用される要素を含む)の ID は、ページ全体で一意である必要があります

この問題を解決するにはidPrefix、jqGrid のオプションを使用できます。たとえばINT IDENTITY、データベース内のテーブルの主キーの列がデータベース内にあるとします。この場合、ROWID のネイティブ ID として整数が使用されます。値は、たとえば3、最初のグリッドで、、、などです。使用法により、行 (要素) に割り当てられる ID は、、 になります。したがって、最初のグリッドに を使用し、次のような別の値を使用すると、潜在的な ID の重複の問題を解決できます。サーバーにデータを送信する場合 (たとえば、グリッドで編集を使用する場合)、jqGrid が rowid からプレフィックスを自動的に削除することが重要です。「id」と「rowid」の名前を区別できます。「ROWID」は常に540idPrefix: "g1_"<tr>"g1_3""g1_5""g1_40"idPrefix: "g1_"idPrefix: "g2_"idPrefixプレフィックス付き。関数を使用$.jgrid.stripPrefしてプレフィックスをカットできます。

于 2013-06-05T13:08:43.373 に答える