JqGrid, wie die center-box löschen?
in Meinem Jqgrid ich habe eine Spalte mit löschen von links, alles funktioniert perfekt, außer, dass löschen der Bestätigungs-box erscheint in der oberen linken Ecke die ganze Zeit. ich will das Bestätigungs-Feld in der Mitte des jqgrid, nicht in der linken oberen Ecke.
{ name: 'act', index: 'act', width: 150, align: 'center', sortable: false}],
gridComplete: function () {
var rows = jQuery("#list").jqGrid('getGridParam','selrow');
var ids = jQuery("#list").jqGrid('getDataIDs');
var gr = jQuery('#list'); gr.setGridHeight("auto", true);
for (var i = 0; i < ids.length; i++) {
var cl = ids[i];
be = "<a href='#' style='height:25px;width:120px;' type='button' value='Slet' onclick=\"jQuery('#list').jqGrid('delGridRow','" + cl + "',{reloadAfterSubmit:false, url:'@Url.Action("deleteRow")'}); return false;\">Slet </>";
jQuery("#list").jqGrid('setRowData', ids[i], { act: be });
}
},
UPDATE
be = "<a href='#' style='height:25px;width:120px;' type='button' value='Slet' onclick=\"jQuery('#list').jqGrid('delGridRow','" + cl + "', myDelParameters); return false;\">Slet </>";
code für meine Globale variable:
myDelParameters = {reloadAfterSubmit:false, url:'@Url.Action("deleteRow")', beforeShowForm: function(form) {
//"editmodlist"
var dlgDiv = jQuery("#list").jqGrid("#delmodlist" + grid[0].id);
var parentDiv = dlgDiv.parent(); //div#gbox_list
var dlgWidth = dlgDiv.width();
var parentWidth = parentDiv.width();
var dlgHeight = dlgDiv.height();
var parentHeight = parentDiv.height();
//TODO: change parentWidth and parentHeight in case of the grid
// is larger as the browser window
dlgDiv[0].style.top = Math.round((parentHeight-dlgHeight)/2) + "px";
dlgDiv[0].style.left = Math.round((parentWidth-dlgWidth)/2) + "px";
}};
Du musst angemeldet sein, um einen Kommentar abzugeben.
Legen Sie bereits einige Parameter des delGridRow - Methode (siehe
{reloadAfterSubmit:false, url:...
im code).Mein Vorschlag, dass Sie verwenden
afterShowForm
in der Liste der delGridRow Parameter. Die Umsetzung derafterShowForm
könnte sein, wie in die alte Antwort, aber mit der Verwendung von"#delmodlist"
("#delmod" + grid[0].id
, wovar grid = $("#list")
) statt$("#editmod" + grid[0].id)
.Anderen mehr kurze form der Umsetzung könnte sein, mit Rücksicht auf jQuery-UI-Position:
In die demo ich benutze eine solche Funktion für alle Hinzufügen/Bearbeiten und Löschen von Formen.
AKTUALISIERT: Es scheint mir, dass Sie Probleme in der Umsetzung. Ich machte eine weitere demo, die Sie können Sie leicht ändern, was Sie wollen. Ich glaube nicht, legen Sie
editurl
, so dass, wenn Sie drücken Sie die "Löschen" - Taste wird der Fehler angezeigt. Außerdem ist das HTML-fragment, die Sie versuchen, um Platz in der 'act' - Spalte ist eine Kombination von<a>
und<button>
Einstellungen. Weil ich weiß nicht, was Sie wollte, legte ich nur<a>
in der 'act' - Spalte. Ich hoffe, dass jetzt können Sie einfach ändern, meine demo zu machen, Ihr Programm zu arbeiten.Hier ist das schema der code von meine demo, die Sie verwenden können:
reloadAfterSubmit:false
: zum Beispiel{reloadAfterSubmit:false, , url:'@Url.Action("deleteRow"), beforeShowForm: function($form) {... }
. Eine weitere Möglichkeit ist, wenn Sie definieren, die global - Funktion (definiert auf der obersten Ebene) und die Funktion von Namen wiebeforeShowForm: myFormCenter
. Sie können auch festlegen, wie global - Objektvar myDelParameters = {reloadAfterSubmit:false, url:'@Url.Action("deleteRow")', beforeShowForm: function($form) {... }};
und verwenden... cl + "', myDelParameters); return false;
var dlgDiv = jQuery("#list").jqGrid("#delmodlist" + grid[0].id)
ist falsch. Es sollte entwedervar dlgDiv = $("#delmodlist");
odervar grid = $("#list"), dlgDiv = $("#delmod" + grid[0].id);
. Ich veränderte den text meiner Antwort zu beschreiben, die alle mehr klar.für die Zentrierung der jqdialog und dem display in der Nähe der ausgewählten Reihe
.ui-jqdialog{position:fixed; left:415px;}
Dies funktioniert perfekt für meine Anforderung.
Danke