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値は未定義です。同じ構造を使用して行を削除するにはどうすればよいですか?
私は自分の問題の解決策を見つけました。
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です。
を使用して行を削除できます
$('#editDataGridList').jqGrid('delRowData',rowid);
変数cellValue
は、削除フォーマッターと同じスコープで定義されていません。あなたは2つのことを試すことができます:
rowId
の代わりに削除関数にcellValue
引数を渡します。onSelectRow
ハンドラーで選択した行のID値に設定します。