ThinkGeo.com    |     Documentation    |     Premium Support

Bind the Features to Datagrid or

Hi Guys,


if we have InMemoryFeatureLayer or a list of Featurs we can not run SQL Query over it. and if we bind it's feature to a datagrid/Listview/... it will show the data like the first attached file.


what's the best way to convert the ColumnValue to the tabular data.


Regards,

Ben



Feature_Data.png (12.6 KB)
Tabular_View.png (61.8 KB)

Ben, 
  
 As far as I know, it’s possible but most of them are not worth to implement because you need to write a lot of control template XAML and code behind to implement this specific scenario. I think the best way is using DataGrid + DataTable. For example, you have a class like a ViewModel which is part of MVVM pattern. It has a GeoCollection<Feature> property which holds a reference of the InMemoryFeatureLayer.InternalFeatures. It also maintains a DataTable property which has several columns; in your case the columns must be feature.Id, feature.Tag and all the keys of its column values. Here is one thing I want to point out, the columns of the features you added might be different, so we assume that all the features have the same columns. Then implement the CollectionChanged event in case the DataTable syncs the latest Features added into the InMemoryFeatureLayer. In this event, you can fill/remove the DataTable with the converted data rows from the feature. On the XAML side, you just only need to bind the view model to the DataContext and make the DataTable as source of your DataGrid. 
  
 Hope it makes sense; let me know if you have any more queries. 
  
 Thanks, 
 Howard