2011-10-20 10 views
6

Jak uzyskać obiekt wiersza w wierszu wybranym w jqGrid? Potrzebuję rzeczywistego obiektu, a nie wartości komórki. Przeszedłem przez dokumentację, ale nie mogłem znaleźć metody, która da mi obiekt wiersza. ponieważ używam niestandardowych formaterów, wartość CellValue nie będzie działać.jqGrid Obiekt wiersza in onSelectRow

Odpowiedz

9

przypadku zastosowania custom formatter i chcą uzyskać wartość komórki z tytułu getCell lub getRowData trzeba wdrożyć unformat również funkcję.

Nie jest jasne, co masz na myśli pod "Potrzebuję rzeczywistego obiektu, a nie wartości komórki". Nie jest również jasne, którego używasz datatype, niezależnie od tego, czy używasz opcji loadonce: true, czy też ładujesz dane z serwera, w jakim formacie dane zostaną wysłane na serwer.

Jeśli używasz datatype: 'local' lub użyj loadonce: true wewnętrzne data i _index parametry zostaną wypełnione. Aby uzyskać surowe dane z sieci przez rowid można użyć

var rowData = this.p.data[this.p._index[rowid]] 

lub

var grid = $(this), 
    localdata = grid.jqGrid('getGridParam', 'data'), 
    indexes = grid.jqGrid('getGridParam', '_index'), 
    rowData = localdata[indexes[rowid]]; 

Jeśli nie używać datatype: 'local' lub użyj loadonce: true i załadować dane z serwera tylko można zapisać obiekt reprezentował dane z odpowiedzi serwera w zmiennej (w obiekcie). Obsługa zdarzeń loadComplete ma jeden parametr data, który jest nieprzetworzonymi danymi przesłanymi z serwera. Dzięki temu możesz zapisać dane, które potrzebujesz w obiekcie (na mapie, która otrzyma obiekt yut przez rowid) i użyć go wewnątrz obsługi zdarzeń onSelectRow.

+0

Dzięki za to, wskazał mi w dobrym kierunku – SystemParadox

+1

@SystemParadox: Nie ma za co! Polecam dodatkowo zbadanie metody 'getLocalRow'. Spójrz [odpowiedź] (http://stackoverflow.com/a/9145342/315935) lub [inny] (http://stackoverflow.com/a/10362294/315935) na kilka małych przykładów kodu i dodatkowe informacje. [Kod źródłowy] (https://github.com/tonytomov/jqGrid/blob/v4.3.2/js/grid.base.js#L3494-3505) tej metody jest bardzo mały i ja również polecam jej przeczytanie . – Oleg

+0

Muszę przyznać, zawsze to przeoczyłem, ale przechowywanie danych do późniejszego wykorzystania na loadComplete jest bardzo cenną funkcjonalnością. Ponieważ nigdy nie używam typu danych: "local" lub loadonce: true. Zastanawiam się nawet, dlaczego nie jest on domyślnie przechowywany w jakiejś własności "rawdata". W każdym razie dziękuję za wskazanie tego Olega. +1 – Steven

3

w moim projekcie:

ondblClickRow : function(rowid,iRow,iCol,e) { 
    $($("#completeDetail").getInd(rowid,true)).find(":first").click(); 
} 

byłoby to rozwiązać rząd zwiększenie nie znaleźć szukając rzędu

użyj tej funkcji ->getInd(rowid,rowcontent).

Ta metoda zwraca indeks wiersza w tabeli siatki określonej przez id=rowid, gdy parametr rowcontent ma wartość false (domyślnie). Jeśli parametr wierszowy ma wartość true, zwraca obiekt wiersza wpisu. Jeśli nie można znaleźć wiersza, funkcja zwraca wartość false.