1

MySQL を保持するファイルに必要なデータを送信する方法がわからないため、JQGrid から行を削除できません。コールドフュージョンを使用しています。

私の JQGrid ファイルでは、私の editurl パラメータは次のように設定されています。

editurl: url+"process_delete.cfc?method=process_delete&region="+region,

私のMySQLクエリを保持する私のprocess_delete.cfcファイルには、これがあります:

DELETE FROM awesome_table
WHERE region = '#region#' AND Field1 = '??????' AND Field2 = '???????'

MySQL に到達していることはわかっています。問題はありません。また、リージョンは URL から適切に設定されます。問題ありません。問題は、削除しようとしている行からデータにアクセスして Field1 と Field2 にデータを入力し、クエリを効果的に完了する方法がわからないことです。誰でも助けることができますか?ありがとう。

削除の場合、次のコードがあります。

jQuery.jgrid.del = {
            caption: "Delete Item",
            msg: "Delete record?",
            bSubmit: "Delete",
            bCancel: "Cancel",
            beforeSubmit: function(postdata, formid) { 
                var rowid = $("#mygrid").getGridParam('selrow');
                $("#mygrid").jqGrid('saveRow',rowid,false,'clientArray');
                var rowvalues = $("#mygrid").getRowData(rowid);
                return [true, ""]
            }

アラート メッセージ ボックスにを表示するrowidと、「null」が返されるので、そこが問題の原因かもしれません。

4

2 に答える 2

6

delDataプロパティと共に使用しfield1て関数field2として定義するか、使用するonclickSubmitか、DELETE 操作で使用されるbeforeSubmitものを動的に変更するか、コールバックを使用することができます。最良の方法は、使用する他のオプションによって異なります (たとえば、削除操作に使用する方法によって異なります)。回答には、すべての方法を詳細に示す他の回答への参照が含まれていました。URLserializeDelDatamtype

たとえば、使用できます

onclickSubmit: function (options, rowid) {
    // we suppose that use don't use multiselect: true option
    // in the case rowid parameter if the string with the id of the
    // deleted row

    // we can get the data about the deleted row with respect of
    // getCell, getLocalRow or getRowData methods
    var rowData = $(this).jqGrid("getRowData", rowid);

    // now we can modify the URL used in the Delete operation
    options.url += "?" + $.param({
        field1: rowData.field1,
        field2: rowData.field2
    });

    return {}; // you can return additional data which will be sent to the server
}
于 2012-09-08T12:49:36.330 に答える
0

CFC から返されてグリッドに入力されるコードを確認しないと、あまり役に立ちません。ただし、1 つの方法として、行の ID にアクセスし、それをアンカー タグなどの HTML 要素に配置する方法があります。次に例を示します。

データを準備するループを作成している場合

//Some loop
<cfset dataRows[i]['id'] = #yourqueryId# />
<cfset dataRows[i]['cell'] = "<a href="##" class="delete" id="#yourqueryId#">Delete</a>" />

次に、JSON オブジェクトを CFM ファイルに渡します

 <cfset JSONReturn = {total=#totalPages#,page=#page#,records=#recordcount#,rows=dataRows} />

次に、グリッドを表示するページで、アンカー タグのクリックを処理するイベントを追加します。

$('a.delete').on('click', function(){
    var id = $(this).attr('id');
    //do something with the id
})

それが役立つことを願っています!

于 2012-09-08T04:07:30.927 に答える