2 Stimmen

JqGrid: Einstellen der Position für den "No Rows Selected"-Dialog

Ich habe also einige gute Lösungen für die Zentrierung der Dialogfelder zum Bestätigen von Löschen, Bearbeiten, Anzeigen usw. gefunden aquí . Wenn jedoch keine Zeilen auf dem Raster ausgewählt sind, erscheint ein anderes Dialogfeld, das eine einfache "Warnung: Bitte Zeile auswählen." Abgesehen davon, dass dieser Dialog eine schreckliche Grammatik hat, scheine ich keine Möglichkeit zu finden, die Ereignisse dieses Dialogs so zu behandeln, dass ich ihn wie gewünscht neu positionieren kann.

Ich fügte Handler für jedes Ereignis im navGrid hinzu, das ich finden konnte, und verwendete BugZilla, um zu sehen, ob es bei einem dieser Ereignisse erfolglos stoppen würde. Wenn Zeilen ausgewählt sind wird das Ereignis "Löschen" problemlos ausgelöst. Haben Sie eine Idee? Unten ist mein Code:

$('#sessionGrid').jqGrid({...}).navGrid('#sessionPager', { 
            add: false,
            edit: false,
            del: true,
            search: false,
            closeOnEscape: true
        }, {
            afterShowForm: function (form) {
                form.closest('div.ui-jqdialog').center();
            }
        }, {
            afterShowForm: function (form) {
                form.closest('div.ui-jqdialog').center();
            }
        }, {
            caption: "Delete",
            msg: "Delete the selected sessions?",
            bSubmit: "Delete",
            bCancel: "Cancel",
            afterShowForm: function (form) {
                form.closest('div.ui-jqdialog').center();
            }
        }, {
            afterShowForm: function (form) {
                form.closest('div.ui-jqdialog').center();
            }
        }, {
            afterShowForm: function (form) {
                form.closest('div.ui-jqdialog').center();
            }
        });

0voto

Justin Ethier Punkte 126797

Der folgende Code in grid.formedit.js wird verwendet, um diesen Dialog anzuzeigen:

if (o.del) {
    tbd = $("<td class='ui-pg-button ui-corner-all'></td>");
    pDel = pDel || {};
    $(tbd).append("<div class='ui-pg-div'><span class='ui-icon "+o.delicon+"'></span>"+o.deltext+"</div>");
    $("tr",navtbl).append(tbd);
    $(tbd,navtbl)
    .attr({"title":o.deltitle || "",id: pDel.id || "del_"+elemids})
    .click(function(){
        if (!$(this).hasClass('ui-state-disabled')) {
            var dr;
            if($t.p.multiselect) {
                dr = $t.p.selarrrow;
                if(dr.length===0) {dr = null;}
            } else {
                dr = $t.p.selrow;
            }
            if(dr){
                if($.isFunction( o.delfunc )){
                    o.delfunc.call($t, dr);
                }else{
                    $($t).jqGrid("delGridRow",dr,pDel);
                }
            } else  {
// !!! The actual dialog is displayed here  -
                $.jgrid.viewModal("#"+alertIDs.themodal,{gbox:"#gbox_"+$.jgrid.jqID($t.p.id),jqm:true});$("#jqg_alrt").focus();
            }
        }
        return false;
    }).hover(
        function () {
            if (!$(this).hasClass('ui-state-disabled')) {
                $(this).addClass("ui-state-hover");
            }
        },
        function () {$(this).removeClass("ui-state-hover");}
    );
    tbd = null;
}

Leider bietet jqGrid hierfür kein Ereignis an. Aber vielleicht haben Sie Glück und binden Ihre eigene Funktion an die Löschschaltfläche click Veranstaltung. In derselben Datei können Sie sehen, wie die DOM-ID der Schaltfläche "Löschen" zugewiesen wird:

.attr({"title":o.deltitle || "",id: pDel.id || "del_"+elemids})

Im Wesentlichen können Sie entweder die id als Teil der Löschparameter, oder wenn Sie dies nicht tun, wird es standardmäßig auf elemids der die DOM ID Ihres Gitters zugewiesen wird (EG: Ihr Selektor wäre '#del_mygrid' ).

Wie auch immer, dann können Sie etwas verwenden wie jQuery('div.ui-jqdialog').center(); in Ihrem click Ereignisbehandlungsroutine, um den Dialog nach Bedarf neu zu positionieren.

Ist das hilfreich?


Nebenbei bemerkt, der eigentliche Dialogtext ist in grid.locale-en.js -

Alarmtext: "Bitte Zeile auswählen",

Ich stimme zu, dass das furchtbar ist :) Die gute Nachricht ist, dass dies eine separate js-Datei ist, so dass Sie es nach Bedarf überarbeiten können.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X