2016-04-15 7 views
1

ich eine Aktualisierung von einer anderen Instanz eines frei jqGrid gridview auszulösen versuchen das Click-Ereignis eines treegrid Blattknoten, um zu erfassen. Ich benutze free-jqGrid 4.13.2. Ich habe mir den Quellcode für das Treegrid angesehen, aber ich sehe keine Funktion, die ausgelöst wird, wenn auf den Blattknoten geklickt wird.Frei jqGrid treegrid Blattknoten Click-Ereignis

Ich habe versucht, einen benutzerdefinierten Formatierer in der Gridview verwenden, die Cellvalue mit einem div mit einem Onclick-Ereignisse zu ersetzen, die die Gridview neu geladen. Es funktioniert das erste Mal (es aktualisiert die Gridview), aber danach ist es nicht mehr und das einzige, was ich sehe, ist, dass die Icons in der Gridview-Symbolleiste mit jedem Klick auf den TreeGrid-Blattknoten dupliziert werden.

Antwort

1

Baum jqGrid haben viele Rückrufe für TreeGrid Knoten, aber das Blatt wird als eine einfache Reihe mit Daten interpretiert werden. Sie müssen also beforeSelectRow, onCellSelect oder onSelectRow verwenden, um den erforderlichen Klick zu erkennen. Der Rückruf hat rowid als den ersten Parameter und Sie können getLocalRow verwenden, um die Daten der Zeile basierend auf der rowid abzurufen. Der entsprechende Code wird sehr einfach:

beforeSelectRow: function (rowid, e) { 
    var item = $(this).jqGrid("getLocalRow", rowid); 

    if (item != null && item.isLeaf) { 
     alert("The row with leaf \"" + item.name + "\" is clicked"); 
    } 
    return true; // allow row selection 
} 

The demo zeigt den Code. Sie können e.target verwenden, um genauere Informationen über die angeklickte Zelle zu erhalten. Zum Beispiel $(e.target).closest("tr.jqgrow>td") erhalten Sie den jQuery-Wrapper auf das DOM-Element von angeklickt <td> Zelle.

+0

Danke Oleg! Ich glaube, ich habe nicht über die Verbindung zwischen Tree und Grid jqGrid nachgedacht. Es macht jetzt Sinn und ich werde mich in Zukunft daran erinnern. –

+0

@JerryP: Gern geschehen! – Oleg

+0

Können wir das ngclick-Ereignis in der Gitterzelle definieren, so dass es sich bei Verwendung mehrerer Gitter für jedes Gitter anders verhalten sollte als für eine Warnung, wenn wir eine andere Eigenschaft wollen, die wir einfach externalisieren können – shv22