0


私は今jqGridから始めていますが、理解できない問題がいくつかあります。グリッドをインライン編集できるようにしていますが、1行目を編集するだけです。いずれかの行をクリックすると、最初の行だけが編集されます。何が起こっているのかわかりません。誰かがそれを段階的に行う方法を教えてくれれば、それは私に大いに役立つでしょう。

これは私のコードの一部です:

$(function(){
    var lastSel;
    $("#list").jqGrid({
    url:'php.php', 
    datatype: 'xml',
    mtype: 'POST', 
    colNames:['ac_n_quad', 'ac_l_circ', 'ac_n_circ', 'ac_fin_g', 'ac_pot', 'ac_volt', 'ac_n_polos', 'ac_t_prot', 'ac_v_prot', 'ac_cabo',
    'ac_fd', 'ac_fp', 'ac_ctr', 'ac_pot_a', 'ac_pot_b', 'ac_pot_c', 'ac_pos_1', 'ac_pos_2', 'ac_calc'], 
    colModel :[ 
      {name:'ac_n_quad', index:'ac_n_quad', width:110, align:'right', editable:true, key:true},
      {name:'ac_l_circ', index:'ac_l_circ', width:65, align:'right', editable:true},
      {name:'ac_n_circ', index:'ac_n_circ', width:120, align:'right', editable:true, key: true},
      {name:'ac_fin_g', index:'ac_fin_g', width:60, align:'right', editable:true},
      {name:'ac_pot', index:'ac_pot', width:55, align:'right', editable:true},
      {name:'ac_volt', index:'ac_volt', width:60, align:'right', editable:true},
      {name:'ac_n_polos', index:'ac_n_polos', width:100, align:'right', editable:true},
      {name:'ac_t_prot', index:'ac_t_prot', width:100, align:'right', editable:true},
      {name:'ac_v_prot', index:'ac_v_prot', width:70, align:'right', editable:true},
      {name:'ac_cabo', index:'ac_cabo', width:60, align:'right', editable:true},
      {name:'ac_fd', index:'ac_fd', width:55, align:'right', editable:true},
      {name:'ac_fp', index:'ac_fp', width:55, align:'right', editable:true},
      {name:'ac_ctr', index:'ac_ctr', width:60, align:'right', editable:true},
      {name:'ac_pot_a', index:'ac_pot_a', width:70, align:'right', editable:true},
      {name:'ac_pot_b', index:'ac_pot_b', width:70, align:'right', editable:true},
      {name:'ac_pot_c', index:'ac_pot_c', width:70, align:'right', editable:true},
      {name:'ac_pos_1', index:'ac_pos_1', width:70, align:'right', editable:true},
      {name:'ac_pos_2', index:'ac_pos_2', width:70, align:'right', editable:true},
      {name:'ac_calc', index:'ac_calc', width:65, align:'right', editable:true}],
    cmTemplate: { align: 'center', editable: true },

    onSelectRow: function(id){
        if(id && id !== lastSel){
            $(this).restoreRow(lastSel);
            lastSel = id;
        }
        $(this).editRow (id, true);
    },
    prmNames: {ac_n_quad: "id"},
    editurl:'clientArray',
    autowidth: 'true', 
    height: 'auto', 
    rowNum: 10, 
    rowList: [10,20,30, 40, 50, 60, 70, 80, 90, 100],
    sortname: 'ac_n_quad, ac_n_circ',
    sortorder: 'asc', 
    pager: '#pager', 
    viewrecords: true,
    gridview: true,  
    caption: 'Table circ_69' 
    });

    jQuery('#list').jqGrid('gridResize');
    jQuery('#list').jqGrid('navGrid', '#pager', {
             edit: true,
             add: true,
             del: true,
             search: false,
             refresh: false
    });
});
4

1 に答える 1

2

あなたのコードには多くのエラーがあります。最も重要なのは、key: true複数を 1 つの列として使用することです。プロパティを2 つの'ac_n_quad'との定義に含めたことがわかります'ac_n_circ'。jqGrid がグリッドを埋めるとき、グリッド<table>の本体、<tr>行、および<td>グリッド上のセルに使用します。jqGridは常に(行の)すべてに何らかのid属性を割り当てることを理解することが重要です。HTML では、1 つの HTML ページに<tr>を複製することはできません。id一部の列に使用する場合key: true、jqGrid は内部オプションを、オプションを持つ配列keyIndex内の列のインデックスに割り当てます。あなたの場合、jqGridは最後のものを使用すると思いますcolModelkey: trueの列key: true。したがって、'ac_n_circ'列の値が ID として使用されます。

列に重複した値がある場合、'ac_n_circ'多くの異なる非常に奇妙な効果が発生します (Web ブラウザーごとに区別されます)。たとえば、ある行をクリックすると、別の行を選択できます。編集中にもさまざまな奇妙な効果を得ることができます。

あなたが使用しているのでprmNames: {ac_n_quad: "id"}(それも間違っています。正しいものは になりますprmNames: {id: "ac_n_quad"})、それがac_n_quad本当の一意の ID であると推測できます。したがってkey: true、列でのみ使用する必要ac_n_quadがあり、他の列からプロパティを削除する必要があります ( 'ac_n_circ')。

さらに、コードを減らして簡素化できます。の要素のプロパティのデフォルト値は、ドキュメントcolModelに記載されています(表の「デフォルト」列を参照)。たとえば、 、、のデフォルト値は 150、「左」、および false です。すべての列で使用しており、最も頻繁に使用しています。だから、あなたが使用することができますwidthaligneditablealign:'right', editable:truewidth:70

cmTemplate: { align: 'right', editable: true, width:70 }

現在使用している代わりにcmTemplate: { align: 'center', editable: true }。それはあなたがに減らすことができcolModelます

colModel: [
    {name:'ac_n_quad', width:110, key:true},
    {name:'ac_l_circ', width:65},
    {name:'ac_n_circ', width:120},
    {name:'ac_fin_g', width:60},
    {name:'ac_pot', width:55},
    {name:'ac_volt', width:60},
    {name:'ac_n_polos', width:100},
    {name:'ac_t_prot', width:100},
    {name:'ac_v_prot'},
    {name:'ac_cabo', width:60},
    {name:'ac_fd', width:55},
    {name:'ac_fp', width:55},
    {name:'ac_ctr', width:60},
    {name:'ac_pot_a'},
    {name:'ac_pot_b'},
    {name:'ac_pot_c'},
    {name:'ac_pos_1'},
    {name:'ac_pos_2'},
    {name:'ac_calc', width:65}
]

indexvalue の値と同じ値がある場合は、nameスキップできますindex。のプロパティのcolNames値のみが含まれている場合はスキップできます。namecolModel

于 2013-02-22T20:36:38.777 に答える