2011-11-09 17 views
6

Używam jqGrid, na funkcji edycji/dodawania Chcę mieć rozwijaną listę w jednym z tych pól.jqGrid setWybierz funkcję z parametryzowanym zapytaniem

Działa to w przypadku korzystania z funkcji setSelect jak to:

$grid->setSelect("title", "SELECT DISTINCT name,name as TestingName FROM template", true, true, false, array(""=>"All")); 

Jak mogę przekazać parametry do mojego zapytania? Próbowałem te:

1- "SELECT DISTINCT name,name as TestingName FROM template where tempid = ?"

2- "SELECT DISTINCT name,name as TestingName FROM template where tempid = $rowid"

3- "SELECT DISTINCT name,name as TestingName FROM template where tempid = ". $rowid

żadna z powyższych pracował mając jednocześnie:

if(isset ($_REQUEST["tempid"])) 
    $rowid = jqGridUtils::Strip($_REQUEST["tempid"]); 
else 
    $rowid = ""; 
+0

Nie mogę znaleźć żadnej dokumentacji dotyczącej metody '-> setSelect" klasy php jqgrid na http://www.trirand.com/blog/phpjqgrid/docs/jqGrid/jqGrid.html#sec-method- podsumowanie możesz podać trochę więcej informacji? –

+0

http://www.trirand.net/documentation/php/index.htm -> sekcja tutoriale-> drop-downy – Grace

Odpowiedz

4

Gdybym skorygować zrozumieć swoje pytanie używasz editoptions z dataUrl. Chcesz mieć adres URL z dodatkowym parametrem tempid, której wartością powinien być rowid bieżącego wybranego wiersza.

Ze składni twojego pytania przypuszczam, że używasz jakiegoś komercyjnego produktu jqGrid for PHP z trirand.net. W takim przypadku powinieneś użyć tagu [jqgrid-php]. jqGrid to czysty produkt o otwartym kodzie JavaScript. Odpowiadam więc, w jaki sposób można dodać parametr dataUrl w JavaScript.

jqGrid ma ajaxSelectOptions opcji, które mogą być używane do modyfikować się jQuery.ajax opcje rozmowy, które wykorzystują dataUrl. Można to zrobić po

var myGrid = $("#list"); 

myGrid.jqGrid({ 
    // all your current parameters of jqGrid and then the following 
    ajaxSelectOptions: { 
     data: { 
      tempid: function() { 
       return myGrid.jqGrid('getGridParam', 'selrow'); 
      } 
     } 
    } 
}); 

Jeżeli parametr jQuery.ajaxdata zawierać metodę zamiast własności metoda będzie wywoływana za każdym razem odpowiedniego jQuery.ajax rozmowy. Użyłem tej samej sztuczki w the answer.

+0

tempid jest kluczem podstawowym siatki głównej, wysyłam mu szczegółową siatkę, i mogę uzyskać wartość tempid w siatce szczegółów. moim problemem jest to, że nie wiem jak użyć funkcji setSelect do przekazania zapytania z parametrem – Grace

+0

@Grace: Nie widzę różnicy. Możesz po prostu 'myMasterGrid.jqGrid ('getGridParam', 'selrow');' w siatce szczegółów. Alternatywnie można zapisać identyfikator bieżącego wybranego wiersza siatki głównej w zmiennej (np. 'MasterRowId'). Możesz to zrobić w zdarzeniu 'onSelectRow' siatki głównej. Następnie możesz użyć 'tempid: function() {return masterRowId; } ' – Oleg

+0

@Grace: Prawdopodobnie używasz' ajaxSelectOptions' w niewłaściwym miejscu. Zmieniłem trochę moją odpowiedź, aby pokazać wyraźniej, że powinieneś dodać 'ajaxSelectOptions' do innych opcji jqGrid, których używasz. – Oleg