Bonjour,
En essayant de rendre ma datasource Rest dynamique afin de créer les colonnes (champs) suivant le contenu de cette DS, j'obtiens l'erreur
Code :
- Fields cannot be added to a DataSource after the underlying component has been created
|
Voici le code de ma DataSource
Code :
- public class ViewDataSource2 extends RestDataSource {
- @Override
- protected Object transformRequest(DSRequest dsRequest) {
- return super.transformRequest(dsRequest);
- }
- @Override
- protected void transformResponse(DSResponse response, DSRequest request, Object data) {
-
- super.transformResponse(response, request, data);
-
- String toto = XMLTools.selectString(data, "@name" );
-
- toto = "pouet : " + toto;
-
- DataSourceTextField phoneField = new DataSourceTextField("name", "Phone" );
- phoneField.setValueXPath("@name" );
- System.out.println("getFields : " + getFields());
- ArrayList<DataSourceField> list = new ArrayList<DataSourceField>();
- for (int i = 0 ; i < getFields().length ;i++) {
- list.add(getFields()[i]);
- }
- list.add(phoneField);
-
- setFields(list.toArray(new DataSourceField[list.size()]));
- }
|
Voici le code de ma classe utilisant cette datasource
Code :
- ViewDataSource2 dataSource = new ViewDataSource2();
- dataSource.setDataFormat(DSDataFormat.XML);
-
- dataSource.setRecordXPath("//wky:column" );
- dataSource.setDataURL("/helloworld/workeyapirestproxy?url=http://localhost:8080/workey-j2ee-api/View/1&login=test1&password=test" );
-
-
- final ListGrid countryGrid = new ListGrid();
-
- countryGrid.setWidth100();
- countryGrid.setHeight100();
- countryGrid.setDataSource(dataSource);
- countryGrid.setAutoFetchData(true);
- ....
|
J'ai posté ça sur le forum de smartgwt mais je n'ai eu aucune réponse pour l'instant.
A priori mon besoin d'avoir une datasource avec des champs dynamiques semble compliqué à réaliser ...
J'ai tenté avec une définition directe de Record[] sur l'objet countryGrid ceci dit dans ce cas les filtres ne fonctionnent pas c'est pour celà que je me suis rabatu sur les datasource qui est la méthode recommandé mais qui semble assez inflexible pour la définition de colonnes dynamiques. Si vous avez la moindre solution je suis preneur
Blured.