public void AddFeatureClass(FeatureClassLinkInfo _add_value) { FeatureClassLinkInfo[] tmp = new FeatureClassLinkInfo[link_info_array.Length + 1]; link_info_array.CopyTo(tmp, 0); tmp[link_info_array.Length] = _add_value; link_info_array = tmp; }
} //method internal static void SelectionToDataGridView(MgSelectionBase _selection_base) { palette_window.links_control.is_suspended = true; // информируем о заморозке palette_window.links_control.SuspendLayout(); // замораживаем логику palette_window.links_control.data_grid.Enabled = false; palette_window.links_control.data_grid.SuspendLayout(); // замораживаем логику DataGridView palette_window.links_control.layers_list.Enabled = false; palette_window.links_control.progressbar_in_status.Visible = true; // включение ProgressBar palette_window.links_control.status_strip.Refresh(); MgReadOnlyLayerCollection layers = _selection_base.GetLayers(); int curr_features_count = 0, features_count = 0; // подсчет количества выбранных объектов foreach (MgLayerBase layer in layers) { features_count += _selection_base.GetSelectedFeaturesCount(layer, layer.FeatureClassName); } if (features_count == 0) { return; } // заполнение списка слоев palette_window.links_control.layers_list.Items.Clear(); // очищаем список if (layers.Count > 1) { palette_window.links_control.layers_list.Items.Add("(Все выбранные)"); } foreach (MgLayerBase layer in layers) { palette_window.links_control.layers_list.Items.Add(layer.Name); } palette_window.links_control.layers_list.SelectedIndex = 0; // заполнение DataGridView palette_window.links_control.data_grid.Rows.Clear(); // очищаем строки foreach (MgLayerBase layer in layers) { int curr_ftr_class_idx = config.IndexOf(layer.FeatureClassName); if (curr_ftr_class_idx == -1) { curr_features_count += _selection_base.GetSelectedFeaturesCount(layer, layer.FeatureClassName);; palette_window.links_control.UpdateStatusRowCounterLabelAndProgressBar(curr_features_count, features_count); continue; } FeatureClassLinkInfo curr_link_info = config.link_info_array[curr_ftr_class_idx]; MgFeatureReader ftr_rdr = _selection_base.GetSelectedFeatures(layer, layer.FeatureClassName, false); MgPropertyDefinitionCollection identity_prop_defs = ftr_rdr.GetClassDefinition().GetIdentityProperties(); // получаем набор идентификационных полей while (ftr_rdr.ReadNext()) { curr_features_count++; DataGridViewRow link_row = new DataGridViewRow(); // новая строка DataGridViewLinkCell link_cell; // ячейка // формирование URL link_cell = new DataGridViewLinkCell(); string title_str = ResolveLinkStringByValueFromReader(ftr_rdr, curr_link_info.LinkTitle); link_cell.Value = String.IsNullOrEmpty(title_str)? "<Null>": title_str; link_cell.ToolTipText = curr_link_info.LinkCommandPath + command_splitter + ResolveLinkStringByValueFromReader(ftr_rdr, curr_link_info.LinkURL); link_row.Cells.Add(link_cell); // вставка ячейки // формирование ID MgPropertyCollection curr_identity_props = GetPropertiesFromReader(ftr_rdr, identity_prop_defs); SelectedFeatureInfo sel_info = new SelectedFeatureInfo(layer, curr_identity_props); link_cell = new DataGridViewLinkCell(); link_cell.Value = sel_info; link_row.Cells.Add(link_cell); // вставка ячейки // добавлени строки в DataGridView palette_window.links_control.data_grid.Rows.Add(link_row); // обновление ProgressBar'а и счетчика строк palette_window.links_control.UpdateStatusRowCounterLabelAndProgressBar(curr_features_count, features_count); } /// while (ftr_rdr.ReadNext()) } /// foreach (MgLayerBase layer in layers) palette_window.links_control.URL.SortMode = DataGridViewColumnSortMode.NotSortable; // сброс сортировки palette_window.links_control.URL.SortMode = DataGridViewColumnSortMode.Automatic; // на исходную автоматическую palette_window.links_control.data_grid.SelectAll(); // выбираем все строки palette_window.links_control.progressbar_in_status.Visible = false; palette_window.links_control.layers_list.Enabled = true; palette_window.links_control.data_grid.Enabled = true; palette_window.links_control.data_grid.ResumeLayout(); // размораживаем логику DataGridView palette_window.links_control.ResumeLayout(); // размораживаем логику palette_window.links_control.is_suspended = false; palette_window.links_control.UpdateStatusRowCounterLabel(); // обновляем строку статуса }