public CosmeticTableViewVM(CosmeticTableBaseM cosTable)
        {
            this.MoveToObject = false;
            _axMapLib         = (cosTable.Source as CosmeticDataRepositoryVM).MapViewer;
            _mvLayer          = _axMapLib.getLayer(cosTable.Name);
            _cosTable         = cosTable;
            _isReadOnly       = true;
            _filterVM         = new CosmeticTableViewFilterVM(this, null);
            Title             = String.Format("{0}: \"{1}\"", Rekod.Properties.Resources.CosTableView_CosmeticLayer, cosTable.Text);

            foreach (var field in _cosTable.Fields)
            {
                if (field.Type != AbsM.EFieldType.Geometry)
                {
                    DataColumn dc = new DataColumn(field.Name, typeof(String));
                    Data.Columns.Add(dc);
                    if (cosTable.PrimaryKeyField == field)
                    {
                        dc.ReadOnly     = true;
                        Data.PrimaryKey = new[] { dc };
                    }
                }
            }

            GetColumns();
            Reload();

            PropertyChanged += CosmeticTableViewVM_PropertyChanged;
            SelectedItems.CollectionChanged += SelectedItems_CollectionChanged;
            Reload();
        }
        public DataRepositoryVM(TmM.ITableManagerVM source, AbsM.ERepositoryType type, bool isTable)
        {
            _source = source;
            if (_source != null)
            {
                _mv = source.mv;
            }
            else
            {
                _mv = Program.mainFrm1.axMapLIb1;
            }

            _isTable     = isTable;
            _type        = type;
            _id          = ++_idSource;
            _hasVMWindow = new Dictionary <WindowViewModelBase_VM, Window>();

            _hashTables = new Dictionary <object, AbsM.ITableBaseM>();

            _layers = new ObservableCollection <AbsM.ILayerM>();
            ICollectionView defView = CollectionViewSource.GetDefaultView(_layers);

            defView.Filter = delegate(object o)
            {
                return(!(o as AbsM.TableBaseM).IsHidden);
            };

            _groups     = new ObservableCollection <AbsM.IGroupM>();
            _hashGroups = new Dictionary <object, AbsM.IGroupM>();
            _tables     = new ObservableCollection <AbsM.ITableBaseM>();


            _tables.CollectionChanged += Tables_CollectionChanged;
            _groups.CollectionChanged += Groups_CollectionChanged;
        }
        /// <summary>
        /// Применить фильтр на карте
        /// </summary>
        public void ApplyOnMap(object parameter = null)
        {
            AxmvMapLib.AxMapLIb axMapLib = Program.mainFrm1.axMapLIb1;
            Pg_M.PgTableBaseM   pgTable  = _source.Table as Pg_M.PgTableBaseM;

            mvLayer layer = axMapLib.getLayer(pgTable.NameMap);

            if (layer != null)
            {
                List <IParams> listParams = new List <IParams>();
                String         query      = GetWhere(DynamicFilter, listParams);
                // todo: (Dias) На текущий момент axMapLib в строке фильтра не использует параметры.
                // Поэтому приходится парсить параметры. Нужно чтобы карта поддерживала параметры в фильтрах
                foreach (IParams param in listParams)
                {
                    if (param.type == DbType.Date ||
                        param.type == DbType.DateTime ||
                        param.type == DbType.String)
                    {
                        query = query.Replace(param.paramName, String.Format("'{0}'", param.value));
                    }
                    else
                    {
                        query = query.Replace(param.paramName, String.Format("{0}", param.value));
                    }
                }
                layer.Filter = query;
            }
        }
Exemple #4
0
        public CosmeticTableBaseM(AbsM.IDataRepositoryM source, int srid)
            : base(source, srid, AbsM.ETableType.MapLayer)
        {
            _axMapLib = (Source as AbsVM.DataRepositoryVM).MapViewer;

            _id      = CosmeticTableBaseM.cosmeticLayerId++;
            _objects = new ObservableCollection <CosmeticObjectM>();

            PrimaryKeyField = new CosmeticFieldM(this, PkFieldName, "id", AbsM.EFieldType.Integer, false);

            Fields.Add(PrimaryKeyField);
            Fields.Add(new CosmeticFieldM(this, "label", Rekod.Properties.Resources.CosTableView_Label, AbsM.EFieldType.Text, false));
            Fields.Add(new CosmeticFieldM(this, GeomFieldName, "Геометрия", AbsM.EFieldType.Geometry, false));

            DefaultStyle = new PgStyleLayerM(CosmeticStyleType.All);
            LabelStyle   = new PgStyleLableM();

            PropertyChanged += CosmeticTableBaseM_PropertyChanged;
        }