6

jqGrid を使い始めたばかりで、カスタムの削除ボタンを使用して行を削除したいと考えています。以下のコード スニペットを使用しています。

try {
        var cellValue;
        var id;
        jQuery("#editDataGridList").jqGrid({
            datatype: "local",
            width: 900,
            height: 270,
            colNames: ['Action', 'Interview id', 'Date of observation', 'Name of enumerator'],
            onSelectRow: function (id) {
                debugger;
                var rowData = jQuery(this).getRowData(id);                   
                cellValue = rowData['InterviewId'];
            },
            colModel: [                
                 {
                     name: 'actions', index: 'InterviewId', sortable: false,
                     formatter: function (rowId, cellval, colpos, rwdat, _act) {

                         return "<input type='button' id='btnid' value='delete' class='btn' onClick='deleteRecords(" + cellValue + ");' />";

                     }
                 },
                { name: 'InterviewId', index: 'InterviewId' },
                { name: 'Date', index: 'Date' },
                { name: 'NameOfEnum', index: 'NameOfEnum' }
            ],

            multiselect: false,
            caption: "Edit already entered data"
        });
    }
    catch (e) {
        alert(e.message);
    }

上記のコードは、この関数呼び出しを使用して、削除のために選択された行の値を渡します

function deleteRecords(rowData) {
    alert(rowData);
}

残念ながら、rowData 値は未定義です。同じ構造を使用して行を削除するにはどうすればよいですか?

4

3 に答える 3

3

私は自分の問題の解決策を見つけました。

formatter: function (rowId, cellval, colpos, rwdat, _act) {
       var rowInterviewId = colpos.InterviewId.toString();
       return "<input type='button' id='" + rowInterviewId + "' value='delete' class='btn'
       onClick='deleteRecords(this)' />";    
}

これをパラメーターとしてボタンの onclick イベントに渡すだけで、関数呼び出しでボタンに必要なすべてのプロパティが含まれますが、最も重要なのは、ボタンが属する行のインタビュー ID であるボタン ID です。

于 2013-08-21T08:16:58.567 に答える
2

変数cellValueは、削除フォーマッタと同じスコープで定義されていません。次の 2 つのことを試すことができます。

  1. rowIdの代わりに、フォーマッタから削除関数に引数を渡しますcellValue
  2. onSelectRowBOTH 関数の範囲外で変数を宣言し、その変数をハンドラーで選択された行の ID 値に設定します。
于 2013-08-20T12:33:10.473 に答える