ThinkGeo.com    |     Documentation    |     Premium Support

ValueStyle

Hi All,


we are in the process of upgrading from Ver 2.0 to Ver 3.0


 










In my project, there is a requirement which requires to use different color/shape, etc for features based on the value of a particular column in the shape file or from certain datatable linked to the shape file when the shape file was loaded.


We can not use ValueStyle as it only support string values and can not use data from a linked datatable and also it does not support numbers.


 


Any ideas or help will be much appreciated.


 


Thanks,


Prady




Hi Pradeep, 
  
 I think you still can use ValueStyle in your scenario. 
  
 First of all, if you use MsSql2008FeatureLayer, you can easily load shape and it’s values from Database easily as using ShapeFileFeatureLayer does. 
 Secondly, if the column type is number, we’ll convert it to string and do the comparison. 
  
 So please don’t worry about using ValueStyle, and try. 
  
 If you have any questions please let me know. 
  
 Thanks, 
 Howard

Hi Howard, 
 Thanks for the reply. 
 Can I use MsSql2008FeatureLayer to load layers files from shp files and add data from sql server? 
  
 We do not have complete file in the sql server, it’s only some of the associated data which is in SQL server. 
  
 Regards, 
 Prady 


Hi Pradeep,


MsSql2008FeatureLayer doesn’t support loading from shape file. Now there is an idea which is simple for you.


We have an event called CustomColumnFetch in FeatureSource, you can find a demo in our installed samples at Samples\FeatureLayers\AddMyOwnCustomDataToAFeatureLayer.aspx.


In your requirement, you can preload a data table from SQL server and store it to session where you can index a row of data easily in the datatable, then fetch your custom data when loading features from shape file.


Please see this post which is similar as yours for detail.

gis.thinkgeo.com/Support/Dis...fault.aspx


Thanks,

Howard



Hi Howard, 
 Thanks for the reply. 
 I load the layers based on the logged in user. 
 now, a user can have access to multiple layers which use data from the datatable. 
 now, how would I know which layer has called "CustomColumnFetch" 
  
 Regards, 
 Prady

Pradeep,


You can find the layer from the sender parameter of this event.

For example, ShapeFileFeatureLayer is what you are using, currentLayer below is the layer you want.ShapeFileFeatureLayer currentLayer = (ShapeFileFeatureLayer)sender;Then you can identify the layer by its name property.


If you have any questions please let me know.


Thanks,

Howard



Hi Howard, 
 This approach works fine for the shape files. 
  
 but in my project, I have one InMemoryFeatureLayer for each ShapeFileFeatureLayer. 
  
 InMemoryFeatureLayer  is being used to draw the selected features from the ShapeFileFeatureLayer. 
  
 when CustomColumnFetch is being called for InMemoryFeatureLayer  , how can I know which ShapeFileFeatureLayer does this InMemoryFeatureLayer belongs? 
  
 Thanks once again. 
  
 Regards, 
 Prady 


Hi Pradeep, 
  
 I think the CustomColumnFetch event is implemented on the ShapeFileFeatureLayer; when you find the selected features, the related values from database is automatically fetched into the feature’s ColumnValues property. 
  
 If you have any questions please let me know. 
  
 Thanks, 
 Howard