私は答えを求めてWebをトロールしてきましたが、予想よりも複雑な場合(または解決策がわからない場合)かもしれませんが、選択した行をから削除する方法を探しています。ゴミ箱アイコンをクリックしてjqgridを作成します。
現在、私のグリッドにはLinqtoSQLデータが入力されています。これが私のグリッドです:
jQuery("#grid").jqGrid({
url: '<%= ResolveUrl("~/Home/GetData") %>',
datatype: "json",
mtype: 'GET',
postData: { DDLid: function () { return jQuery("#DDL option:selected").val(); } },
colNames: ['Col1', 'Col2'],
colModel: [
{ name: 'Col1', index: 'Col1', width: 200, editable: false },
{ name: 'Col2', index: 'Col2', width: 200, editable: false }
],
jsonReader: {
repeatitems: false
},
rowNum: 10,
pager: jQuery('#gridpager'),
sortname: 'Type',
viewrecords: true,
sortorder: "asc",
caption: "Table"
}).navGrid('#gridpager', { del: true, add: false, edit: false, search: false }, {}, {}, {url: "Delete"});
現在、投稿データの「id」はこのテーブルの主キーではありません。グリッドにデータを入力するために必要なだけです。選択した行IDを取得してDeleteメソッドに渡したいのですが、それを行う方法が見つかりません。
postDataで使用しようとしjQuery("#grid").getGridParam('selrow')
ましたが、常にnullを返します。
どんな助けでも大歓迎です。
参考までに、私の削除方法は次のとおりです。
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Delete(int DDLid)
{
int row = Convert.ToInt32(/*I NEED THIS ID*/);
var query = from x in _ctx.DataTable
where ((x.id == row))
select x;
_ctx.DataTable.DeleteOnSubmit(query.Single());
_ctx.SubmitChanges();
return Json(true);
}
このメソッドは呼び出されて問題ありませんが、間違ったIDを取得しています。選択した行のIDが必要です。DDLidが複数の行を返すため(グリッドへの入力に使用されるため)、これは機能しません。
それが理にかなっていることを願っています。