private void HighlightOrUnhighlightRecord(DataRow currentDataRow) { bool isSelected = !Convert.ToBoolean(currentDataRow[FeatureLayerAdapter.IsSelectedColumnName]); currentDataRow[FeatureLayerAdapter.IsSelectedColumnName] = isSelected; var featureId = currentDataRow[FeatureLayerAdapter.FeatureIdColumnName].ToString(); Feature selectedFeature = null; if (!viewModel.SelectedLayer.FeatureIdsToExclude.Contains(featureId)) { viewModel.OpenFeatureLayer(); var columns = viewModel.SelectedLayer.FeatureSource.GetColumns(GettingColumnsType.FeatureSourceOnly); selectedFeature = viewModel.SelectedLayer.FeatureSource.GetFeatureById(featureId, columns.Select(c => c.ColumnName).ToArray()); viewModel.CloseFeatureLayer(); } else { var editorOverlay = GisEditor.ActiveMap.FeatureLayerEditOverlay; if (editorOverlay != null) { if (editorOverlay.EditShapesLayer.InternalFeatures.Contains(featureId)) { selectedFeature = editorOverlay.EditShapesLayer.InternalFeatures[featureId]; } } } if (selectedFeature != null && selectedFeature.GetWellKnownBinary() != null) { Feature copyFeature = GisEditor.SelectionManager.GetSelectionOverlay().CreateHighlightFeature(selectedFeature, viewModel.SelectedLayer); copyFeature.Tag = viewModel.SelectedLayer; if (isSelected) { if (IsHighlightFeatureEnabled) { DataViewerHelper.HightlightSelectedFeature(copyFeature); } viewModel.SelectedLayerAdapter.SelectedFeatures.Add(selectedFeature.Id, selectedFeature); } else { DataViewerHelper.RemoveHightlightFeature(copyFeature); viewModel.SelectedLayerAdapter.SelectedFeatures.Remove(selectedFeature.Id); } viewModel.SelectedCount = viewModel.SelectedLayerAdapter.SelectedFeatures.Count; } }