0

私はカスタムフォームで次のjqGridを持っています:

jQuery("#list_klanten").jqGrid({
    url:'data/relations_select.jsp',
    datatype: "json",
    colNames:['ID','Klantcode','EAN','Naam','Street','Postal','City','Country','Phone','Status','Cust','Supp','VAT','Language','Currency','','Relationtype','Legal','MotherC','Repr.','Region','Email','Websiote','Faxnr'],
    colModel:[
        {name:'id',index:'id', width:50,editable:false,editoptions:{size:25}},
        {name:'relation_code',index:'relation_code', width:150,editable:true,editoptions:{size:25}},
        {name:'ean_code',index:'ean_code', width:150,editable:true,hidden:true,editoptions:{size:25}}, 
        {name:'name',index:'name', width:250,editable:true,editoptions:{size:25}},
        {name:'streetname',index:'streetname', width:300,editable:true,sortable:true,editoptions:{size:25}},
        {name:'postal_code',index:'postal_code', width:75,editable:true,sortable:true,editoptions:{size:25}},
        {name:'city',index:'city', width:200,editable:true,sortable:true,editoptions:{size:25}},
        {name:'country',index:'country', width:150,editable:true,sortable:true,editoptions:{size:25}},
        {name:'telephone_nr',index:'telephone_nr', width:150,editable:true,hidden:true,editoptions:{size:25}},
        {name:'relation_status',index:'relation_status', width:150,editable:true,hidden:true,editoptions:{size:25}},
        {name:'customer_flag',index:'customer_flag', width:100,editable:false,search:false,hidden:false,formatter:'checkbox',align:'center',editoptions:{size:25}},
        {name:'supplier_flag',index:'supplier_flag', width:100,editable:false,search:false,hidden:false,formatter:'checkbox',align:'center',editoptions:{size:25}},
        {name:'vat_nr',index:'vat_nr', width:150,editable:true,hidden:false,editoptions:{size:25}},
        {name:'language',index:'language', width:150,editable:true,hidden:false,editoptions:{size:25}},
        {name:'currency_code',index:'currency_code', width:150,editable:true,hidden:false,editoptions:{size:25}},
        {name:'arrow',index:'arrow', width:50,editable:false,search:false,formatter:linkFormatter},
    ],
    width:1100,
    height:600,
    rowNum:20,
    editurl:'data/relations_edit.jsp',
    pager: '#pager_klanten',
    viewrecords: true,
    caption:"Klanten",
    grouping: true,
    groupingView : {
        groupField : ['currency_code'],
        groupColumnShow : [true],
        groupText : ['<b>{0}</b>'],
        groupCollapse : false,
        groupOrder: ['asc'],
        groupSummary : [true],
        groupDataSorted : false
    },
    onSelectRow: function(){
        var gsr = jQuery("#list_klanten").jqGrid('getGridParam','selrow');
        if(gsr){
            jQuery("#list_klanten").jqGrid('GridToForm',gsr,"#relation_detail");
        } else {
            alert("Please select Row")
        }
    },
});
jQuery("#list_klanten").jqGrid('navGrid','#pager_klanten',{edit:true,add:true,del:true,search:false},{height:400,reloadAfterSubmit:true,closeAfterEdit:true,url:'data/relations_edit.jsp'},{height:400,reloadAfterSubmit:true,closeAfterAdd:true,url:'data/relations_edit.jsp'});

行が選択されると、ユーザーがこのフォームでレコードを編集できるように、選択された値がフォームに入力されます。保存をクリックすると、次のコードが実行されます。

jQuery("#savedata").click(function(){
        var rowid = jQuery("#row_id").val();
        jQuery("#list_klanten").jqGrid('FormToGrid',rowid,'#relation_detail');
        jQuery("#list_klanten").saveRow(rowid,null,'data/relations_edit.jsp');
});

グリッド自体に編集された値が (一時的に) 表示されますが、実際の「保存」は機能しません。FireBug を見ると、data/relations_edit.jsp が呼び出されていません...? エラーや警告も表示されないため、何も起こっていません。ここで何が欠けていますか?

標準の編集オプション - モーダル ポップアップでの編集 - は問題なく動作します...

どうもありがとう !

ロブレヒト

4

1 に答える 1

0

HTTP POST が実行されないという解決策が見つかりました。jqGrid では、グリッドが編集モードになっている必要があります。

追加しなければなりませんでした

jQuery("#list_klanten").editRow(rowid);

私のコードに

しかし...

カスタム フォームでいくつかのフィールドを編集すると、それらのフィールドはグリッドで更新されますが、投稿されません。カスタム フォームのアイテムが editurl に投稿されていないようです...

いくつかの調査の結果、編集されたすべての値を投稿するには、カスタム ajax 呼び出しを行う必要があることがわかりました。

var data = $('#relation_detail').serialize();
$.post('data/relations_edit.jsp', data);

誰かがより良い解決策を持っている場合は、それについて知りたいと思いますが、現時点ではこれでうまくいきます。

ロブレヒト

于 2012-10-16T15:18:08.053 に答える