Tworzę jqgrid z rozwijanymi kolumnami i używam edycji komórek. Muszę opcje rozwijanej kolumn zmienić dynamicznie i próbowałem wykonawczych przez ustawienie kolumny być:jqGrid opcja dynamicznego wyboru
{ name: "AccountLookup", index: "AccountLookup", width: 90, editable: true, resizable: true, edittype: "select", formatter: "select" },
a następnie w razie beforeCellEdit mam:
beforeEditCell: function(id, name, val, iRow, iCol) {
if(name=='AccountLookup') {
var listdata = GetLookupValues(id, name);
if (listdata == null) listdata = "1:1";
jQuery("#grid").setColProp(name, { editoptions: { value: listdata.toString()} })
}
},
GetLookupValues po prostu zwraca ciąg znaków w formacie "1: One; 2: Two" itd. To działa dobrze, ale opcje są zapełniane jednym kliknięciem za - tj. klikam AccountID w wierszu 1, a menu rozwijane jest puste, ale kiedy ja kliknij AccountID w wierszu 3 opcje ustawione w wierszu 1 kliknij są wyświetlane w wierszu 3 kliknij. I tak dalej. Zawsze jedno kliknięcie z tyłu.
Czy istnieje inny sposób osiągnięcia tego, czego potrzebuję? Bacialnie wyświetlane opcje rozwijane zawsze się zmieniają i muszę je załadować, gdy użytkownik wchodzi do komórki w celu edycji. Być może w jakiś sposób mogę uzyskać kontrolę select w zdarzeniu beforeEditCell i ręcznie wprowadzić jego wartości zamiast wywołania setColProp? Jeśli tak, to czy mogę to zrobić?
Inna sprawa - jeśli lista rozwijana jest pusta, a użytkownik nie anuluje edycji komórki, skrypt siatki zgłasza błąd. Używam edycji pasków klienta, jeśli to robi różnicę.
Jeszcze jedno - opcja getChangedCells w kolumnie wyboru zawsze zwraca tekst, a nie wartość/Id - czy istnieje sposób obejścia tego? –