| /* | |
| Copyright 2019 Esri | |
| Licensed under the Apache License, Version 2.0 (the "License"); | |
| you may not use this file except in compliance with the License. | |
| You may obtain a copy of the License at | |
| http://www.apache.org/licenses/LICENSE-2.0 | |
| Unless required by applicable law or agreed to in writing, software | |
| distributed under the License is distributed on an "AS IS" BASIS, | |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| See the License for the specific language governing permissions and | |
| limitations under the License. | |
| */ | |
| using ArcGIS.Core.Data; | |
| using ArcGIS.Desktop.Framework.Dialogs; | |
| using System; | |
| using System.Collections.Generic; | |
| using System.Collections.ObjectModel; | |
| using System.Linq; | |
| using System.Text; | |
| using System.Threading.Tasks; | |
| namespace LayoutMapSeries.LayoutSettings | |
| { | |
| public class MapSeriesDefinition | |
| { | |
| public string FeatureClassName { get; set; } | |
| public IList<MapSeriesItem> MapSeriesItems = new List<MapSeriesItem>(); | |
| public void LoadFromFeatureClass(string layoutName, FeatureClass featureClass, string fieldList) | |
| { | |
| MapSeriesItems.Clear(); | |
| var oidName = featureClass.GetDefinition().GetObjectIDField(); | |
| QueryFilter getQf = new QueryFilter | |
| { | |
| SubFields = $@"{oidName},{fieldList}" | |
| }; | |
| var fields = fieldList.Split(new char []{ ',' }); | |
| if (fields.Length < 2) | |
| { | |
| throw new Exception($@"List of fields {fieldList} needs to contain at least ID and Name"); | |
| } | |
| // For Selecting all matching entries. | |
| using (var rowCursor = featureClass.Search(getQf)) | |
| { | |
| var oidIdx = rowCursor.FindField(oidName); | |
| var idIdx = rowCursor.FindField(fields[0]); | |
| var nameIdx = rowCursor.FindField(fields[1]); | |
| while (rowCursor.MoveNext()) | |
| { | |
| using (var row = rowCursor.Current) | |
| { | |
| var oid = Convert.ToInt64(row[oidIdx]); | |
| var id = Convert.ToInt32(row[idIdx]); | |
| var name = row[nameIdx].ToString(); | |
| if (string.IsNullOrEmpty(layoutName)) MessageBox.Show("test"); | |
| MapSeriesItems.Add(new MapSeriesItem { Oid = oid, Id = id, Name = name, LayoutName = layoutName }); | |
| } | |
| } | |
| } | |
| } | |
| } | |
| public class MapSeriesItem | |
| { | |
| public long Oid { get; set; } | |
| public int Id { get; set; } | |
| public string Name { get; set; } | |
| public string LayoutName { get; set; } | |
| } | |
| } |