0

JqG​​rid のドキュメントには、postData に関して次のように記載されています。

サーバーに投稿されたデータにコンテンツを追加するために使用される配列

以上です。そのため、postData を使用して PHP に変数を送信し、switch ケースを使用して必要な関数を呼び出すことができるようにしています。

これにより、プロジェクトのすべての関数を含む単一の PHP ページを作成できます。同じことをしたいeditDataので、プロジェクトに関連付けられたすべてのインライン編集機能に PHP ページは必要ありません。

ただし、editDataPHP ページに渡されていないようです。POSTされた変数をファイルに出力しようとしましたが、それらは空でした。提案?

注: 私はeditDataバグを認識していますが、これは私が使用しているバージョン 4.4.4 で修正されているはずです。

$("#list").jqGrid({
    url:'functions.php',
    datatype:'xml',
    mtype:'POST',           
    postData: { 
        action:'popGrid', 
        sqlCount:sqlCount, 
        sqlSelect:sqlSelect, 
        sqlSelect2:sqlSelect2, 
        label1:label1, 
        label2:label2,
    },
    colNames:['Label','Account_Num','Amount', 'Type Code', 'Record Code',    'Sequence'],
    colModel :[
        {name:'label', index:'label', width:150, align:'center', sortable:false, editable:true},
        {name:'cntrct_id', index:'cntrct_id', width:150, align:'center', sortable:true},
        {name:'amount', index:'amount', width:150, align:'center', sortable:false, editable:true},
        {name:'type_cd', index:'type_cd', width:150, align:'center', sortable:false, editable:true},
        {name:'rec_cd', index:'rec_cd', width:150, align:'center', sortable:false},
        {name:'db_seq', index:'db_seq', width:150, align:'center', sortable:false},
    ],
    editurl: 'functions.php',
    extraparam: { action: function(){ return 'grdAdjust'; } },
    onSelectRow: function(id) {
        if(id && id!==lastSel) {
            jQuery('#list').restoreRow(lastSel);
            jQuery('#list').editRow(id,true);
            lastSel=id;
        }
    },

    pager: '#pager',
    rowNum:100,
    rowList:[100,200,300,400,500,600,700,800,900,1000],
    sortname: 'cntrct_id',
    sortorder: 'desc',
    viewrecords: true,
    caption: 'Adjustments'
});
4

1 に答える 1

1

このオプションは、フォーム編集でメイン グリッドeditDataと同じ役割を果たします。反対側では、質問のテキストに「インライン編集」について書きました。その場合は、代わりにオプションを使用する必要があります (ドキュメントを参照してください)。インライン編集の一般的なオプションが必要な場合は、おそらく の使用法のデフォルト設定が役立つ可能性があります。あなたはコードを投稿しておらず、どの編集モードをどのように使用するのかわからないため、使用例などをこれ以上含めることはできません.postDataextraparam$.jgrid.inlineEditeditDataextraparam

更新:あなたはextraparam今間違った方法で使用しています。extraparamはjqGrid オプションではなく、 のオプションですeditRow。正しい使用法は次のようなものです。

onSelectRow: function (id) {
    if (id && id !== lastSel){
        $(this).jqGrid("restoreRow", lastSel);
        $(this).jqGrid("editRow", id, {
            keys: true,
            extraparam: {
                action: function () {
                    return 'grdAdjust';
                }
            }
        });
        lastSel = id;
    }
}

ポスト定数値が必要な場合actionは、単純化された形式のextraparam: likeを使用できますextraparam: {action: 'grdAdjust'}。の異なる呼び出し間で変更される変数または要素の値をページから返す必要がある場合、関数の使用は非常に役立ちますeditRow

さらにgridview: true、jqGrid のオプションを含めて、使用するものを簡素化することをお勧めしcolModelます。あなたがそれを発行できるindexのと同じ値を持っている場合name。のデフォルト値widthはすでに 150 であるため、指定する必要はありませwidth:150ん。すべてまたはほとんどの列で使用する場合は、グリッドにオプションを含めることで、グリッドalign:'center'のデフォルト値を変更できます。ほとんどの列にあるため、設定も含めることができます。その結果、次のように減らすことができます。aligncmTemplate: {align:'center'}sortable: falsecmTemplatecolModel

colModel: [
    {name: 'label', editable: true},
    {name: 'cntrct_id', sortable: true},
    {name: 'amount', editable: true},
    {name: 'type_cd', editable: true},
    {name: 'rec_cd'},
    {name: 'db_seq'},
],
cmTemplate: {align: 'center', sortable: false},

このような変更により、コードの読み取りだけでなく、保守も簡素化されます。列テンプレートの詳細については、こちらを参照してください。

于 2013-02-12T14:53:03.387 に答える