我想在jqGrid中實現我自己的刪除功能。我目前正在使用內置的用戶界面(選擇行,按下頁腳中的垃圾桶按鈕,確認),但我更願意在每行都有一個刪除按鈕,並實現自己的用戶界面進行確認。jqGrid中的自定義刪除按鈕
我在API中看不到任何東西,它允許我向服務器發起刪除 - 只有delRowData
,它會在客戶端上刪除它。這可以做到嗎?
(我正在使用ASP.NET component,FWIW)。
我想在jqGrid中實現我自己的刪除功能。我目前正在使用內置的用戶界面(選擇行,按下頁腳中的垃圾桶按鈕,確認),但我更願意在每行都有一個刪除按鈕,並實現自己的用戶界面進行確認。jqGrid中的自定義刪除按鈕
我在API中看不到任何東西,它允許我向服務器發起刪除 - 只有delRowData
,它會在客戶端上刪除它。這可以做到嗎?
(我正在使用ASP.NET component,FWIW)。
@Erik讓我走上了這條正確的道路。他的解決方案有效,但保留了我想避免的現有僞模式彈出確認UI。
它也不利用JqGrid ASP.NET component提供的服務。只要組件連接到正確配置的數據源(ObjectDataSource,SqlDataSource等),該組件實際上負責所有CRUD操作。
對我來說,這個缺失的部分是組件CRUD操作背後的機制。通過與小提琴手周圍戳我能看到它的相關數據POST到相同的頁面,與jqGrid的對象在查詢字符串的客戶端ID:
MyPage.aspx?jqGridID=ctl00_ctl00_Content_Content_MyJqGrid
刪除,帖子的內容爲@埃裏克描述:
oper=del&id=18
所以我已經能夠複製我自己的工作,讓我保持整個過程的全面控制:
$(".DeleteButton", grid).click(function(e) {
var rowID = getRowID(this);
$(grid).setSelection(rowID, false);
if (confirm('Are you sure you want to delete this row?')) {
var url = window.location + '?jqGridID=' + grid[0].id;
var data = { oper: 'del', id: rowID };
$.post(url, data, function(data, textStatus, XMLHttpRequest) {
$(grid).trigger("reloadGrid");
});
} else {
$(grid).resetSelection();
} // if
}); // click
getRowID = function(el) {
return $(el).parents("tr").attr("id");
};
沒有處理服務器端刪除的基本jqGrid組件的一部分 - 即使您使用內置的delete,它不會爲您刪除它的服務器端,您必須自己處理它。但在這裏是如何設定,讓你的腳本被稱爲當有人點擊您的自定義刪除按鈕:
// your custom button is #bDelete
$("#bDelete").click(function(){
// Get the currently selected row
toDelete = $("#mygrid").jqGrid('getGridParam','selrow');
// You'll get a pop-up confirmation dialog, and if you say yes,
// it will call "delete.php" on your server.
$("#mygrid").jqGrid(
'delGridRow',
toDelete,
{ url: 'delete.php',
reloadAfterSubmit:false}
);
});
以下信息是通過POST過去你刪除URL
Array
(
[oper] => del
[id] => 88
)
其中id是明顯的你在這個例子中傳入了函數,值爲toDelete
。
我其實只是爲我自己的項目做過這件事,以迴應你的問題 - 儘管在看到問題之前我有一個模糊的想法。所以......感謝讓我接受它!
另一個解決方案是方案用鼠標點擊刪除圖標(如果存在)。 刪除圖標(實際上是一個div)的id是「del_ [GridId]」。這可能不是一個完全可靠的解決方案,因爲它們可能會改變id命名。但是,你會得到完全相同的行爲(還有更好的確認模式)。
例子:
$('#MyButton').click(function() { $('#del_' + gridId).click(); });
@Erik - 感謝您指出我在正確的方向。如果您將它連接到正確配置的SqlDataSource(它還負責更新,插入和選擇),ASP.NET組件實際上會爲您執行刪除操作。 – 2010-03-03 20:14:38