2010-10-19 36 views
1

我試圖讓表單域包含一個或多個在不同的數據源中定義的元素。元素有一個數字ID和一個人類可讀的名字。這一切運作良好,直到我試圖拯救;在這種情況下,我總是得到「不是有效的選項」錯誤。SmartGWT中失敗的多個字段驗證

我正在編輯的表單基於Campaigns數據源,可能會鏈接到零個或多個Trunk。

數據源中繼線被定義爲:

DataSourceField fId = new DataSourceField(
      "trunkId", FieldType.INTEGER, "Id"); 
    fId.setPrimaryKey(Boolean.TRUE); 
    fId.setHidden(Boolean.TRUE); 
    fId.setCanEdit(Boolean.FALSE); 

    DataSourceField fName = new DataSourceField(
      "trunkName", FieldType.TEXT, "Name"); 
    fName.setRequired(Boolean.TRUE); 

數據源廣告活動具有字段「主幹」定義爲:

DataSourceField fTrunk = new DataSourceField(
      "trunk", 
      FieldType.INTENUM, 
      "Trunk" 
    ); 
    fTrunk.setMultiple(Boolean.TRUE); 
    fTrunk.setForeignKey("CfgTrunkDS.trunkId"); 

這裏是表單定義,以允許多個值被選擇:

final DynamicForm form = new DynamicForm(); 
    form.setIsGroup(true); 
    form.setGroupTitle("Update Campaign"); 
    form.setNumCols(4); 

    form.setDataSource(dsCampaign); 
    form.setUseAllDataSourceFields(Boolean.TRUE); 

    final SelectItem selectItemMultipleGrid = new SelectItem("trunk"); 
    selectItemMultipleGrid.setTitle("Trunk to use"); 
    selectItemMultipleGrid.setMultiple(true); 
    selectItemMultipleGrid.setMultipleAppearance(MultipleAppearance.PICKLIST); 
    selectItemMultipleGrid.setOptionDataSource(CfgTrunkDS.getInstance()); 
    selectItemMultipleGrid.setValueField("trunkId"); 
    selectItemMultipleGrid.setDisplayField("trunkName"); 


    form.setFields(selectItemMultipleGrid); 

我也看到了正確的多個值,如果我看看「trunk」fi els,當我選擇id爲12和16的元素時,我會看到類似「12,16」的字符串,但仍然沒有通過驗證。我還注意到,如果我在表單定義中評論OptionDataSource,它的工作原理就好。

我做錯了什麼?

回答

0
if(selectItemMultipleGrid.getValueASString == null){ 
    SC.say("Please Select MultipleItem"); 
}