Ejemplo n.º 1
0
        /// <summary>
        /// Обработчик события нажатия клавиши мыши на элемент главного меню,
        /// который открывает диалоговое окно для задания условия поиска конфигурации сервера
        /// </summary>
        private void поискToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (ServersInfoMain != null && ServersInfoMain.Count > 0)
            {
                var serversCondition = new ServersConditionConstructorForm(ServersInfoMain);
                if (serversCondition.ShowDialog() == DialogResult.OK)
                {
                    int pos = 0;
                    if (!_serverSelected)
                    {
                        pos = ServersInfoMain.IndexOf(serversCondition.ServersInfoToShow.First());
                    }
                    else
                    {
                        pos = ServersInfoToShow.IndexOf(serversCondition.ServersInfoToShow.First());
                    }

                    if (pos > -1)
                    {
                        serverInfoBindingSource.Position = pos;
                    }
                }
            }
            else
            {
                MessageBox.Show("Отсутсвуют конфигурации серверов для совершения поиска!", "Ошибка",
                                MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
        /// <summary>
        /// Выполнение отбора конфигураций серверов данных по условию
        /// </summary>
        private int RunSelection()
        {
            List <ServerInfo> selectedServers = null;

            try
            {
                if (SelectedPlatform != null && SelectedCPU != null)
                {
                    selectedServers = ServersInfoMain.Where(si =>
                                                            si.Platform.Equals(SelectedPlatform.Manufacturer.Name + " " + SelectedPlatform.Model) && si.CPU.Equals(SelectedCPU.Manufacturer.Name + " " + SelectedCPU.Model))
                                      .ToList();
                }
                else if (SelectedPlatform != null)
                {
                    selectedServers = ServersInfoMain.Where(si => si.Platform.Equals(SelectedPlatform.Manufacturer.Name + " " + SelectedPlatform.Model)).ToList();
                }
                else if (SelectedCPU != null)
                {
                    selectedServers = ServersInfoMain.Where(si => si.CPU.Equals(SelectedCPU.Manufacturer.Name + " " + SelectedCPU.Model)).ToList();
                }
                else
                {
                    selectedServers = ServersInfoMain.ToList();
                }

                ServersInfoToShow = new BindingList <ServerInfo>(selectedServers);
                return(ServersInfoToShow.Count);
            }
            catch
            {
                ServersInfoToShow = null;
                return(0);
            }
        }