/// <summary> /// Удалить объекты слоя /// </summary> /// <param name="table">Таблица</param> /// <param name="ids">Список ID объектов</param> /// <returns>Результат операции</returns> public bool DeleteObjects(CosM.CosmeticTableBaseM table, mvIntArray ids) { if (table != null && ids != null) { try { var layer = MapViewer.getLayer(table.Name); if (layer != null) { bool result = true; for (int i = 0; i < ids.count; i++) { try { mvVectorObject obj = layer.getObject(ids.getElem(i)); int id = Convert.ToInt32((string)obj.fieldValue(table.PkFieldName)); result &= table.DeleteObject(id); } catch { result = false; } } result &= layer.DeleteArray(ids); return(result); } } catch { } } return(false); }
/// <summary> /// Создает объект в списке /// Если объект существует на карте, то его значение обновляется, иначе объект создается /// </summary> /// <param name="label">Значение подписи</param> /// <param name="wkt">Геометрия</param> /// <param name="mapObj">Объект на карте</param> /// <returns>Созданный объект</returns> public CosmeticObjectM CreateObject(string label, string wkt, mvVectorObject mapObj = null) { var tableObj = new CosmeticObjectM(NextObjectId, wkt); tableObj.SetAttribute("label", label); Objects.Add(tableObj); var layerMV = (Source as SourceCosmetic.ViewModel.CosmeticDataRepositoryVM).MapViewer.getLayer(NameMap); if (layerMV != null && tableObj != null) { if (mapObj == null) { mapObj = layerMV.getObject(tableObj.Id); if (mapObj == null) { mapObj = layerMV.CreateObject(); } } if (mapObj != null) { mapObj.setWKT(wkt); mapObj.SetAttribute("label", label); mapObj.SetAttribute(PkFieldName, tableObj.Id.ToString()); } } return(tableObj); }
/// <summary> /// Команда обнавления списка объектов /// </summary> public void Reload(object obj = null) { Data.Clear(); _mvLayer.RemoveDeletedObjects(); TableRows = _mvLayer.ObjectsCount; for (int i = 1; i <= TableRows; i++) { DataRow dr = Data.NewRow(); mvVectorObject mvObject = _mvLayer.getObjectByNum(i); foreach (DataColumn col in Data.Columns) { var colValue = mvObject.fieldValue(col.ColumnName); dr[col.ColumnName] = colValue; } Data.Rows.Add(dr); } }
/// <summary> /// Копирование выделенных объектов /// </summary> public void CopySelectedObjects(object parameter = null) { _mvLayer.RemoveDeletedObjects(); try { foreach (DataRowView drv in SelectedItems) { DataRow dr = drv.Row; int id = Convert.ToInt32(dr["id"]); mvVectorObject mvObj = _mvLayer.getObject(id); mvVectorObject newObj = _mvLayer.CreateObject(); newObj.setWKT(mvObj.getWKT()); String labelValue = mvObj.fieldValue("label") == null ? null : mvObj.fieldValue("label").ToString(); newObj.SetAttribute("label", labelValue); newObj.SetAttribute("id", _cosTable.NextObjectId.ToString()); switch (mvObj.VectorType) { case mvVecTypes.mvVecLine: newObj.style = _cosTable.DefaultLineStyle.Value; break; case mvVecTypes.mvVecPoint: newObj.style = _cosTable.DefaultDotStyle.Value; break; case mvVecTypes.mvVecRegion: newObj.style = _cosTable.DefaultPolygonStyle.Value; break; } } } catch (NullReferenceException ex) { System.Windows.MessageBox.Show(Rekod.Properties.Resources.CosTableView_ObjectNotExists); } catch (Exception ex) { System.Windows.MessageBox.Show(ex.Message); } Reload(); _mvLayer.ExternalFullReloadVisible(); _axMapLib.mapRepaint(); }