Wie kann ich das implementieren einer benutzerdefinierten jqGrid löschen-Taste?
Habe ich einen delete-button für jede Zeile in meiner jqGrid. Jetzt muss ich zum hinzufügen von Funktionalität zu diesen Tasten. Jede Schaltfläche hat, löschen Sie die Zeile, die es in und das entfernen von Daten von dem server. Wie kann ich dies tun? Hier ist mein code bisher:
var lastsel;
jQuery(document).ready(function () {
jQuery("#list").jqGrid({
url: '@Url.Action("Category1List")',
datatype: 'json',
mtype: 'GET',
colNames: ['Navn', 'Slet'],
colModel: [
{ name: 'Navn', index: 'Navn', width: 50,edittype: 'text', align: 'center', editable: true , key: true },
{ name: 'act', index: 'act', width: 75, sortable: false}],
gridComplete: function () {
var ids = jQuery("#list").jqGrid('getDataIDs');
for (var i = 0; i < ids.length; i++) {
var cl = ids[i];
be = "<input style='height:22px;width:90px;' type='button' value='Slet' onclick=\"jQuery('#list').deleteRow('" + cl + "');\" />";
jQuery("#list").jqGrid('setRowData', ids[i], { act: be });
}
},
onSelectRow: function (id) {
if (id && id !== lastsel) {
jQuery('#list').jqGrid('restoreRow', lastsel);
jQuery('#list').jqGrid('editRow', id, true);
lastsel = id;
}
},
editurl: '@Url.Action("GridSave")',
rowNum: 50000,
rowList: [5, 10, 20, 50],
pager: '#page',
sortname: 'Id',
sortorder: "desc",
viewrecords: true,
height: "500px"
});
});
- ist
Slet
den Wert Ihrer Schaltfläche löschen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie delGridRow Methode Vordergrund Beispiel. Um dies zu tun, können Sie einfach ersetzen Sie in Ihrem code
jQuery('#list').deleteRow(
zujQuery('#list').jqGrid('delGridRow',
Können Sie erwägen, die Verwendung
formatter:'actions'
: siehe hier, hier und hier. Eine weitere Möglichkeit zum implementieren von benutzerdefinierten Schaltflächen finden Sie hier.AKTUALISIERT: Für zusätzliche Informationen senden, während der Delete-operation, die Sie verwenden können delData parameter der delGridRow Methode:
Den Ausdruck
jQuery("#list").jqGrid('getCell',cl,'Navn')
wird der Wert aus der 'Navn' - Spalte und die{delData:{Navn:'NavnValue'}
hinzufügenNavn=NavnValue
parameter, um die Daten an den server senden.AKTUALISIERT 2: Ihr Hauptproblem war, dass Sie im demo-Projekt eine andere version der code, wie gepostet, die in Ihrer Frage. Ihre demo hat
statt
das ist der erste wichtige Fehler. Die
rows
Variablen, die Sie festlegen, wievar rows = jQuery("#list").jqGrid('getGridParam','selrow');
innerhalb vongridComplete
. Zu der Zeit keine Zeile ausgewählt ist, wirdrows = null
und Sieonclick=\"jQuery('#list').jqGrid('delGridRow','null'
für alle buttons.Dem nächsten wichtigen problem: sollten Sie
zu
oder verwenden Sie
prmNames: {id: 'ProductId'}
als zusätzliche jqGrid-parameter.Andere häufige Probleme:
_Layout.cshtml
- Datei. Sie sollten zu entfernen<script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script>
denn Sie gehören anderen version von jQuery (jquery-1.5.2.min.js) in derIndex.cshtml
<table id="list">
(hinzufügen ) in dieIndex.cshtml
.jQuery("#list").jqGrid('navGrid', "#page", ...
) sollten Sie 1.)<div id="page"></div>
imIndex.cshtml
und parameter hinzufügenpager: '#page'
zu den jqGrid.</div>
ab EndeIndex.cshtml
. Eine weitere</div>
am Ende@RenderSection("Main", required: false)</div>
(in der_Layout.cshtml
- Datei) sollte auch entfernt werden.Sehen den pager in der richtigen Breite, die Sie umfassen sollten, die
_Layout.cshtml
- Datei das folgende Update<style type="text/css">input.ui-pg-input { width: auto; }</style>
Sollten Sie mindestens jQuery UI CSS und
ui.jqgrid.css
zum Beispiel in der_Layout.cshtml
Datei:Ich würde empfehlen, Sie zu ersetzen
jquery-1.5.2.min.js
zujquery-1.6.2.min.js
. Die Letzte version vonvsdoc
- Dateien können Sie immer laden von hier. In der gleichen Weise die Letzte version (derzeit 1.8.16) von jQuery UI ist auch zu empfehlen.Ich würde empfehlen, dass Sie zum download der VS2010-demo-Projekt die ich erstellt für die Antwort und verwenden Sie es als Vorlage für Ihr Projekt. Sie können Sie leicht ändern Sie den code, Razor.
SellerId
im jqGrid definition. Wenn Sie füllen Sie jqGrid mitSellerId
als id (rowid), dieid
Wert wird automatisch an den server senden. Es wird getan für die Delete-operation in der gleichen Weise, wie für das Bearbeiten oder Hinzufügen von Operationen. Sie können benennen Sie dieid
parameterSellerId
mit Bezug aufprmNames: {id:"SellerId"}
parameter von jqGrid. Einfach überprüfen, was derzeit an den server senden. Wenn Sie wollen, um die Daten in einem anderen format sollten Sie beschreiben, in welches format Sie die Daten benötigen.SellerKey
parameter aus dem controller-action zuid
oder hinzufügenprmNames: {id:"SellerKey"}
parameter der jqGrid. Durch die Art und Weise, die Sie nicht brauchen, um den Namen der controller-action alsdelGridRow
. DiedelGridRow
ist jqGrid-Methode, die die Arbeit auf Ihrem client-code. Dieurl
parameter derdelGridRow
Methode sollte nur gesetzt, um die controller-action.MapRoute
die Sie verwenden in derRegisterRoutes
).versuchen
classOfYourButton
auf klicken, wird Sie dentr