code: public void onSelectionChanged(SelectionEvent event) {
  		Record record = event.getRecord();
  		String featureId = record.getAttribute(FIELD_NAME_FEATURE_ID);
  
  		// Check if selection and deselection are really necessary, to avoid useless events.
  		if (event.getState()) {
  			// Only select a feature if it is not yet selected:
  			if (!layer.isFeatureSelected(featureId)) {
  				layer.getFeatureStore().getFeature(featureId, GeomajasConstant.FEATURE_INCLUDE_ALL,
  						new LazyLoadCallback() {
  
  							public void execute(List<Feature> response) {
  								layer.selectFeature(response.get(0));
  							}
  						});
  			}
  		} else {
  			// Only deselect a feature if it is not yet deselected:
  			if (layer.isFeatureSelected(featureId)) {
  				layer.getFeatureStore().getFeature(featureId, GeomajasConstant.FEATURE_INCLUDE_ALL,
  						new LazyLoadCallback() {
  
  							public void execute(List<Feature> response) {
  								layer.deselectFeature(response.get(0));
  							}
  						});
  			}
  		}
  	}
docs: This method is used only when selection is enabled (see setSelectionEnabled). When the user selects or deselect a
  row in the grid, the feature it represents should also be selected or deselected in the MapModel.