SmartClient Version: 8.2/LGPL Development Only (built 2011-12-05)
Browser: Internet Explorer 9.0.8112.16421
Issue: I have a ListGrid bound to a RestDataSource (using clientOnly(true) for now). The DataSource declares a field that can contain multiple foreign keys to another table.
	(the formatForeignKey just returns the data source's ID + "." + the column name given).
In my list grid I have overridden this field so that I can retrieve the display values:
	This works fine.  The ID is resolved to the correct string.  It even works for multiple entries, correctly resolving each.
I then have a picklist that allows the user to edit the selection of ATAs. This also seems to work:
	What I can't get working is filtering.  I would like to use just a normal TextItem instead of the given picklist to filter.  How can I do this?  I've tried:
	This doesn't seem to work, as the screen just goes blank for a second and then returns all records.
For example:
Assume I have part number 123, which has ATAs abc and cde. If I type "c" in the filter box it should show part number 123 (containing the two ATAs) in my list.
Additionally, it seems that the built-in (default) filter editor doesn't work when you have multiple values, only single values. So when I have part 123 with an ATA of abc, and select abc from the default filter editor it works, but once I add cde to the part the filter editor stops working.
I'm assuming all of this has something to do with the "setMultiple(true)". Do I have to manually come up with some sort of criteria?
Thanks for any help!
Brian
					Browser: Internet Explorer 9.0.8112.16421
Issue: I have a ListGrid bound to a RestDataSource (using clientOnly(true) for now). The DataSource declares a field that can contain multiple foreign keys to another table.
Code:
	
	// This is in AssignedPartsRestDataSource.
DataSourceField ataIds = DataSourceField(
    ATA_IDS_COL_NAME,
    FieldType.INTEGER,
    ATA_IDS_TITLE);
ataIds.setCanEdit(true);
ataIds.setCanFilter(true);
ataIds.setPrimaryKey(false);
ataIds.setRequired(true);
ataIds.setMultiple(true);
ataIds.setForeignKey(TranAtaNumberRestDataSource.getInstance().formatForeignKey(
        TranAtaNumberRestDataSource.ID_COL_NAME));
In my list grid I have overridden this field so that I can retrieve the display values:
Code:
	
	// Override the ATA_IDS field that was declared in the datasource the
// same way.
ListGridField ataIdsField = new ListGridField(
    AssignedPartsRestDataSource.ATA_IDS_COL_NAME,
    AssignedPartsRestDataSource.ATA_IDS_TITLE);
ataIdsField.setType(ListGridFieldType.INTEGER);
ataIdsField.setMultiple(true);
ataIdsField.setOptionDataSource(TranAtaNumberRestDataSource.getInstance());
ataIdsField.setAutoFetchDisplayMap(true);
ataIdsField.setValueField(TranAtaNumberRestDataSource.ID_COL_NAME);
ataIdsField.setDisplayField(TranAtaNumberRestDataSource.ATA_NO_COL_NAME);
I then have a picklist that allows the user to edit the selection of ATAs. This also seems to work:
Code:
	
	SelectItem ataNumberPicklist = new SelectItem(
    AssignedPartsRestDataSource.ATA_IDS_COL_NAME,
    AssignedPartsRestDataSource.ATA_IDS_TITLE);
ataNumberPicklist.setMultiple(true);
ataNumberPicklist.setOptionDataSource(TranAtaNumberRestDataSource.getInstance());
ataNumberPicklist.setValueField(TranAtaNumberRestDataSource.ID_COL_NAME);
ataNumberPicklist.setDisplayField(TranAtaNumberRestDataSource.ATA_NO_COL_NAME);
ListGrid pickListProperties = new ListGrid();
pickListProperties.setAutoFitFieldsFillViewport(false);
pickListProperties.setAutoFitWidthApproach(AutoFitWidthApproach.BOTH);
pickListProperties.setAutoFitFieldWidths(true);
pickListProperties.setFixedRecordHeights(false);
pickListProperties.setAlternateRecordStyles(true);
pickListProperties.setCanResizeFields(true);
pickListProperties.setCanEdit(false);
pickListProperties.setWrapCells(true);
pickListProperties.setOverflow(Overflow.AUTO);
ataNumberPicklist.setPickListProperties(pickListProperties);
ataNumberPicklist.setPickListWidth(ComposerConstants.PICKLIST_DEFAULT_WIDTH);
ataNumberPicklist.setTextMatchStyle(TextMatchStyle.SUBSTRING);
Code:
	
	ataIdsField.setFilterEditorType(new TextItem());
For example:
Assume I have part number 123, which has ATAs abc and cde. If I type "c" in the filter box it should show part number 123 (containing the two ATAs) in my list.
Additionally, it seems that the built-in (default) filter editor doesn't work when you have multiple values, only single values. So when I have part 123 with an ATA of abc, and select abc from the default filter editor it works, but once I add cde to the part the filter editor stops working.
I'm assuming all of this has something to do with the "setMultiple(true)". Do I have to manually come up with some sort of criteria?
Thanks for any help!
Brian