まず第一に、addBtnGrid1
(2) を意味していると思われるときに入れました。addBtnGrid2
次に、サーバー側で行を削除していますか? それはそれを処理する適切な方法ではないように思われるためです (ただし、私はあなたのコードを試していないことを認めなければなりません)。私が削除を扱っている方法はcolumns
、たとえば次のように、受け入れ/キャンセル定義の定義内の ID 自体にアクションを直接埋め込むことです。
columns1 = [
{id:'accnt_name', field:'accnt_name', name: "Account Name", width:90, sortable:true, sorter:sorterStringCompare} },
{id:"id", name:"", field:"id", width:20, formatter: function (r,c,id,def,datactx){ return "<a href='#' onclick='if (confirm(\"Really Delete?\")) removeClick("+id+","+r+")'><img src='/images/deletex_16.png' border='0' /></a>";} }
];
次に、削除する関数 (AJAX を使用して PHP でサーバー側を呼び出す) は次のようになります。
function removeClick(databaseId, gridRow) {
$.post('myajaxfile.php?action=delete', {id:databaseId}, function(ServerResponse) {
// if database return an error then display it to the user and undo the cell change
if(ServerResponse === undefined) {
alert("Deleting from database failed...");
}else {
if( parseInt(ServerResponse.affected_rows) < 1 || ServerResponse.error_msg != "" ) {
alert("Deleting from database failed...\n\nERROR Returned: "+ServerResponse.error_msg);
}else {
// success, update the datagrid view on screen
var item = dataView1.getItem(gridRow);//RowNum is the number of the row
dataView1.deleteItem( item.id );//RowID is the actual ID of the row and not the row number
grid1.invalidate();
grid1.render();
}
}
$('#loading').hide(); // hide the loading logo
}, "json")
.fail(function(ServerResponse) {
alert("Deleting from database failed...\n\nERROR Returned: "+ServerResponse.responseText);
$('#loading').hide(); // hide the loading logo
});
}
したがって、サーバー側で DELETE がうまくいった場合にのみ、グリッドを更新 (レンダリング) します。削除するためにPHPファイル(サーバー側)を表示する必要はないと思いますが、表示する場合は再度質問してください...