2012-09-30 25 views
0

我想列出SelectItem組件內的表。我爲此使用ListGrid組件。下面是代碼:使用SelectItem的重複數據源字段(smartGWT)

final ListGrid brandGrid = new ListGrid(); 

    ListGridField nameField = new ListGridField("name"); 
    ListGridField descriptionField = new ListGridField("description"); 
    ListGridField detailField = new ListGridField("detail"); 

    final SelectItem filterList = new SelectItem(); 
    filterList.setDisplayField("name"); 
    filterList.setValueField("description"); 
    filterList.setPickListWidth(400); 


    filterList.setOptionDataSource(myDataSource); 
    filterList.setPickListFields(nameField, descriptionField); 
    filterList.setPickListProperties(brandGrid); 
    filterList.setDefaultValue(record.getAttributeAsString("name")); 
    filterList.setShowTitle(false); 
    filterList.setStartRow(false); 

而對於myDataSource實例的數據源代碼(我稱這種方法來初始化類屬性DataSource myDataSource我用SelectItem filterList前):

private DataSource getBrandData(List<BrandDB> result){ 
     DataSource ds = new DataSource(); 

     DataSourceTextField id = new DataSourceTextField(); 
     id.setName("idBrand"); 
     id.setPrimaryKey(true); 

     DataSourceTextField name = new DataSourceTextField(); 
     name.setName("name"); 

     DataSourceTextField description = new DataSourceTextField(); 
     description.setName("description"); 

     ds.setFields(id, nazov, popis); 

     ds.setClientOnly(true); 
     for(int i = 0; i < result.size(); i++){ 
      Record rc = new Record(); 
      rc.setAttribute("idBrand", result.get(i).getIdBrand()+""); 
      rc.setAttribute("name", result.get(i).getName()); 
      rc.setAttribute("description", result.get(i).getDescription()); 
      ds.addData(rc); 
     } 
     return ds; 
    } 

的問題是,價值description在我數據源在幾個地方有相同的值(這些值的ID和名稱是不同的)。我得到以下錯誤:

TMR0:WARN:fetchMissingValues:isc_SelectItem_1:Deriving valueMap for 'description' from dataSource based on displayField 'name'. This dataSource contains more than one record with description set to Not defined with differing name values. Derived valueMap is therefore unpredictable. 

任何想法如何設置SelectItem接受這些重複值?非常感謝你的回答。 :)

回答

0

問題解決了:

誤差位於這行代碼:

filterList.setValueField("description"); 

描述不是唯一的,由於這個原因實際上它不能是的SelectItem組件內部值字段。這是必要的,如下所示,只修改這行代碼:

filterList.setValueField("idBrand"); 

idBrand是獨一無二的,因爲這樣的SelectItem有唯一標識,它的價值領域,可以使過濾器它定義爲數據源中的主鍵。

相關問題