2012-03-18 102 views
0

兩個選擇框相同的反應,我創建級聯選擇如下 -呈現來自控制器

<td>Reference Table:</td> 
<td><g:select name="tableCombo" 
      noSelection="${['':message(code:'Select Table')]}" 
      from="${result}" value="${tableName }"  onchange="${remoteFunction(controller:'load', 
      action:'getColumns', update:'columns', params:'\'tableCombo=\' + this.value')}"/></td> 
    </tr> 
    <tr><td>Constraint On 1:</td> 
     <td><g:select name="columns" noSelection="${['':message(code:'Select Columns')]}" from="[]" /></td> 
     <td>Constraint Value : 
     </td> 
     <td><g:textField name="columnValue" value="${enterVal }"  /> </td> </tr> 
<tr><td>Constraint On 2:</td> 
     <td><g:select name="columns2" noSelection="${['':message(code:'Select Columns')]}" from="[]" /></td> 
     <td>Constraint Value :</td> 
     <td><g:textField name="columnValue" value="${enterVal }" /> 

現在我想渲染和填充列& columns2兩個選擇框的onchange tableCombo。但不知道如何從控制器渲染。

def getColumns = { 
    def columns = GGWSchemaXref.executeQuery("select distinct p.columnname  from GGWSchemaXref p where p.tablename=:table",[table:params.tableCombo]) 
    render g.select(from:columns, name:"columns") 
     } 

請幫助這個。

感謝

+0

感謝答覆Alidad。你是對的我想在第一個選擇框更改時更新兩個選擇框(一次)。我可以指定列和列2無論如何更新(下)onchange =「$ {remoteFunction(控制器:'加載', \t \t \t \t行動:'getColumns',更新:'列',params:'\'tableCombo = \ '+ THIS.VALUE')}「/> \t \t \t \t \t \t \t我已經使用了模板的方法。 \t \t \t \t \t \t \t – sana 2012-03-18 12:03:34

+0

我不認爲你可以更新「更新」超過一個元素。基於這個jira http://jira.grails.org/browse/GRAILS-4878。但是你可以寫一個javascript函數來根據響應更新元素。而不是從控制器中呈現你的選擇,在地圖或JSON中返回所需的值,然後使用javascript渲染它們。 – Alidad 2012-03-18 23:58:41

回答

0

看來你正試圖以填充你的兩個選擇的基礎上,第一選擇的值的值。我建議返回一個JSON或者渲染一個模板,其中包含一個模態地圖,包括你的控制器的結果,並將其渲染到你的視圖中。 看看這兩個問題:

how to populate 2nd Combobox(g:select) values on basis of 1st Combobox (g:select)

Grails: Load data on one ComboBox depending on another

希望這些可以幫助

+0

謝謝Alidad。以上兩個鏈接正在做同樣的事情,我try.My問題是如何通過兩個選擇框(在一次)名稱,而更新後調用remotefunction? – sana 2012-03-18 13:40:21