在SmartGWT中未通过多个字段验证

时间:2010-10-19 08:33:55

标签: gwt smartgwt smartclient

我正在尝试让表单字段包含一个或多个在不同数据源中定义的元素。元素具有数字ID和人类可读的名称。一切顺利,直到我试图保存;在这种情况下,我总是得到“非有效选项”错误。

我正在编辑的表单基于广告系列数据源,可以链接到零个或多个中继。

数据源中继定义为:

    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”fiels,当我选择id为12和16的元素时,我会看到一个类似“12,16”的字符串。但仍然没有通过验证。我还注意到,如果我在表单定义中注释OptionDataSource,它的工作原理一样好。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

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