2013-08-09 3 views
0

Я новичок в SmartGwt. Я пытаюсь сделать DynamicForm с ComboBoxItem, и я хочу установить значения combo-box из некоторой таблицы в базе данных. DataSource, который содержит данные формы, отличается. Как я могу это сделать?DynamicForm с ComboBoxItem и несколькими DataSource

Вот мой Java-код:

// DataSource 
DataSource arcDS = DataSource.get("automaticExportConfig"); 
// ComboboxItem set 
cycleList = new ComboBoxItem("cycle"); 
cycleList.setOptionDataSource(arcDS); 
cycleList.setOptionOperationId("comboBoxCycleList"); 
cycleList.setDisplayField("cycle"); 
cycleList.setValueField("cycle"); 
cycleList.setAutoFetchData(true); 
cycleList.setFilterLocally(false); 

.ds.xml файл:

<DataSource 
    dbName="PostgreSQL" 
    ID="automaticExportConfig" 
    serverType="sql" 
    tableName="automaticExportConfig" 
    titleField="id" 
> 

<fields> 
    <field name="id" type="sequence" sequenceName="automaticExportConfig_id_seq" hidden="true" primaryKey="true"/> 
    <field name="cycle" type="text" title="Cycle" /> 
    </fields> 

<operationBindings> 
    <binding operationType="fetch" operationId="comboBoxCycleList" outputs="id"> 
     <customSQL>SELECT id FROM billingcycle</customSQL> 
     <serverObject className="com.demo.server.AutomaticExportConfigDMI" methodName="getComboBoxCycleList"/> 
    </binding> 

</operationBindings> 

<serverObject lookupStyle="new" className="com.demo.server.AutomaticExportConfigDMI"/> 

DMI.java файл:

public DSResponse fetch(DSRequest dsRequest) throws Exception { 
    log.info("procesing AutomaticExportConfig DMI fetch operation"); 
    DSResponse dsResponse = dsRequest.execute(); 
    System.out.println("data"+dsResponse.getData()); 
    return dsResponse; 
} 

public DSResponse getComboBoxCycleList(com.isomorphic.rpc.RPCManager manager, javax.servlet.http.HttpServletResponse response, DSRequest dsRequest) throws Exception { 
    log.info("procesing AutomaticExportConfig DMI fetch operation"); 
    DSResponse dsResponse = dsRequest.execute(); 
    System.out.println("listdata"+dsResponse.getData()); 
    return dsResponse; 
} 

Данные приведены в консоль, но не в ComboBox.

ответ

0

Есть предпочтительнее сделать присоединение к файлу в вашем источнике данных с помощью тега <operationBindings>. Вот пример:

<operationBindings> 
      <operationBinding operationType="fetch"> 
       <tableClause>crm_objects,crm_kind</tableClause> 
       <whereClause>crm_objects.crm_obj_kind = crm_kind.crm_kind_idnum AND ($defaultWhereClause)</whereClause> 
      </operationBinding> 
     </operationBindings> 

Я надеюсь, что я ответил на ваш вопрос, потому что это не достаточно

ясно