public TeachersForm(Root root) { InitializeComponent(); _root = root; // содаем панель с таблицей автоматически по классу и списку panel1.Controls.Add(GridPanelBuilder.BuildPropertyPanel(root, new Teacher(), root.Teachers)); }
// Обработчик события первой загрузки главной формы private void MainForm_Load(object sender, EventArgs e) { string fileName; fileName = Path.ChangeExtension(System.Windows.Forms.Application.ExecutablePath, ".mdb"); if (File.Exists(fileName)) { Helper.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=AccountingPerformanceView.mdb;"; _root = SaverLoader.LoadFromBase(Helper.ConnectionString); if (!string.IsNullOrWhiteSpace(SaverLoader.OperationResult)) { Console.WriteLine("Ошибка загрузки: " + SaverLoader.OperationResult); } // при загрузке из файла корневой объект вновь создается, поэтому снова передаем ссылку на него Helper.DefineRoot(_root); // регистрируем таблицы сущностей после загрузки из файла _root.RegistryTables(); } UpdateInterface(); panel2.Controls.Add(GridPanelBuilder.BuildPropertyPanel(_root, new StudyGroup(), _root.StudyGroups.FilteredBySpecialityAndSpecialization(Guid.Empty, Guid.Empty))); panel2.Enabled = false; var panel = GridPanelBuilder.BuildPropertyPanel(_root, new Student(), _root.Students.FilteredBySpecialityAndSpecialization(Guid.Empty, Guid.Empty)); GridPanelBuilder.HideButtonsPanel(panel); panel3.Controls.Add(panel); }
public PassMattersForm(Root root) { InitializeComponent(); _root = root; // создаем панель с таблицей автоматически по классу и списку из модели _gridPanel = GridPanelBuilder.BuildPropertyPanel(root, new PassMatter(), root.PassMatters); panel1.Controls.Add(_gridPanel); }
// При выборе специализации заполняем таблицу курсов, применяя два фильтра-селектора private void cbSpecializations_SelectionChangeCommitted(object sender, EventArgs e) { // получаем выбранную специальность var speciality = (Speciality)cbSpecialities.SelectedItem; // получаем выбранную специализацию var specialization = (Specialization)cbSpecializations.SelectedItem; // если один из фильтров не выбран, выходим if (speciality == null || specialization == null) { return; } // заполняем таблицу фильтрованными значениями var panel = GridPanelBuilder.BuildPropertyPanel(_root, new StudyGroup(), _root.StudyGroups, _root.StudyGroups.FilteredBySpecialityAndSpecialization(speciality.IdSpeciality, specialization.IdSpecialization), new[] { "IdSpeciality", "IdSpecialization" }, new[] { speciality.IdSpeciality, specialization.IdSpecialization }); panel.GridSelectedChanged += Panel_GroupSelectedChanged; panel2.Controls.Add(panel); // предыдущую панель убираем if (panel2.Controls.Count > 1) { panel2.Controls.RemoveAt(0); } panel2.Enabled = true; // заполняем таблицу фильтрованными значениями if (_group == null) { panel = GridPanelBuilder.BuildPropertyPanel(_root, new Student(), _root.Students, _root.Students.FilteredBySpecialityAndSpecialization(speciality.IdSpeciality, specialization.IdSpecialization), new[] { "IdSpeciality", "IdSpecialization" }, new[] { speciality.IdSpeciality, specialization.IdSpecialization }); } else { panel = GridPanelBuilder.BuildPropertyPanel(_root, new Student(), _root.Students, _root.Students.FilteredBySpecialityAndSpecialization(speciality.IdSpeciality, specialization.IdSpecialization, _group.IdStudyGroup), new[] { "IdSpeciality", "IdSpecialization", "IdStudyGroup" }, new[] { speciality.IdSpeciality, specialization.IdSpecialization, _group.IdStudyGroup }); } panel.GridSelectedChanged += Panel_GridSelectedChanged; panel3.Controls.Add(panel); // предыдущую панель убираем if (panel3.Controls.Count > 1) { panel3.Controls.RemoveAt(0); } GridPanelBuilder.HideButtonsPanel(panel); panel3.Enabled = true; btnStudent.Enabled = btnMoveToGroup.Enabled = false; _student = null; _group = null; }
private void EmptyPanel() { panel1.Controls.Add(GridPanelBuilder.BuildPropertyPanel(_root, new MattersCourse(), _root.MattersCourses.FilteredBySpecialityAndSpecialization(Guid.Empty, Guid.Empty))); if (panel1.Controls.Count > 1) { panel1.Controls.RemoveAt(0); } panel1.Enabled = false; }
public SpecialitiesForm(Root root) { InitializeComponent(); _root = root; // создаем панели с таблицами автоматически по классу и списку из модели _gridPanel = GridPanelBuilder.BuildPropertyPanel(root, new Speciality(), root.Specialities); _gridPanel.GridSelectedChanged += Panel_GridSelectedChanged; panel1.Controls.Add(_gridPanel); panel2.Controls.Add(GridPanelBuilder.BuildPropertyPanel(root, new Specialization(), _root.Specializations.FilteredBySpeciality(Guid.Empty))); panel2.Enabled = false; }
/// <summary> /// Подключение таблицы успеваемости /// </summary> /// <param name="student"></param> private void UpdatePerformanceTable(Student student) { if (_student != null && _semester != null) { var panel = GridPanelBuilder.BuildPropertyPanel(_root, new Performance(), _root.Performances, _root.Performances.FilteredByStudentSemester(student.IdStudent, _semester.IdSemester), new[] { "IdStudent", "IdSemester" }, new[] { student.IdStudent, _semester.IdSemester }); panel1.Controls.Add(panel); // предыдущую панель убираем if (panel1.Controls.Count > 1) { panel1.Controls.RemoveAt(0); } } }
private void FingGroupText(string text) { if (panel2.Controls.Count > 0) { var panel = (GridPanel)panel2.Controls[0]; panel.GridSelectedChanged -= Panel_GroupSelectedChanged; try { GridPanelBuilder.FindText(panel, text); } finally { panel.GridSelectedChanged += Panel_GroupSelectedChanged; } } }
/// <summary> /// Номер семестра выбран /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void cbSemester_SelectionChangeCommitted(object sender, EventArgs e) { _semester = (Semester)cbSemester.SelectedItem; // обновляем таблицу успеваемости студента по номеру семестра var panel = GridPanelBuilder.BuildPropertyPanel(_root, new Performance(), _root.Performances, _root.Performances.FilteredByStudentSemester(_student.IdStudent, _semester.IdSemester), new[] { "IdStudent", "IdSemester" }, new[] { _student.IdStudent, _semester.IdSemester }); panel1.Controls.Add(panel); // предыдущую панель убираем if (panel1.Controls.Count > 1) { panel1.Controls.RemoveAt(0); } panel1.Enabled = true; }
private void Panel_GridSelectedChanged(object obj) { var speciality = (Speciality)obj; if (speciality != null) { panel2.Controls.Add(GridPanelBuilder.BuildPropertyPanel(_root, new Specialization(), _root.Specializations, _root.Specializations.FilteredBySpeciality(speciality.IdSpeciality), new[] { "IdSpeciality" }, new[] { speciality.IdSpeciality })); panel2.Enabled = true; } else { panel2.Controls.Add(GridPanelBuilder.BuildPropertyPanel(_root, new Specialization(), _root.Specializations.FilteredBySpeciality(Guid.Empty))); panel2.Enabled = false; } panel2.Controls.RemoveAt(0); }
public EnrolleesForm(Root root) { InitializeComponent(); _root = root; // панель с таблицей создается автоматичекси по типу класса и используя список из модели _panel = GridPanelBuilder.BuildPropertyPanel(root, new Enrollee(), root.Enrollees); panel1.Controls.Add(_panel); // заполняем список для фильтра специальностей tscbSpeciality.Items.Add(new SpecialityItem { IdSpeciality = Guid.Empty, Name = "Все специальности" }); foreach (var item in root.Specialities) { tscbSpeciality.Items.Add(new SpecialityItem { IdSpeciality = item.IdSpeciality, Name = item.ToString() }); } tscbSpeciality.SelectedItem = tscbSpeciality.Items[0]; }
/// <summary> /// Обработчик выбора фильтра специалности /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void tscbSpeciality_SelectedIndexChanged(object sender, EventArgs e) { var item = (SpecialityItem)tscbSpeciality.SelectedItem; // выбран фильтр для всех специальностей if (item.IdSpeciality == Guid.Empty) { _panel = GridPanelBuilder.BuildPropertyPanel(_root, new Enrollee(), _root.Enrollees); panel1.Controls.Add(_panel); } else // выбрана одна из специальностей { // таблица строится с учетом выбранной специальности _panel = GridPanelBuilder.BuildPropertyPanel(_root, new Enrollee(), _root.Enrollees, _root.Enrollees.FilteredBySpeciality(item.IdSpeciality), "IdSpeciality", item.IdSpeciality); panel1.Controls.Add(_panel); } // прежняя панель удаляется panel1.Controls.RemoveAt(0); }
private void tsmiDictionaries_DropDownOpening(object sender, EventArgs e) { tsmiDictionaries.DropDownItems.Clear(); foreach (var tableName in _school.GetTableNames()) { var tsmi = new ToolStripMenuItem { Text = tableName }; tsmi.Click += (o, arg) => { pnlContainer.Controls.Clear(); var tableItem = _school.GetTableInfo(tableName); if (tableItem != null) { pnlContainer.Controls.Add(GridPanelBuilder.BuildPropertyPanel(_school, tableItem.Item, tableItem.Table)); } }; tsmiDictionaries.DropDownItems.Add(tsmi); } }
private void ListOfDebtorsForm_Activated(object sender, EventArgs e) { _debtors.Clear(); // проходим по всем семестрам, начиная с меньшего номера foreach (var semester in _root.Semesters.OrderBy(x => x.Number)) { // смотрим в списке успеваемости для данного семестра foreach (var performances in _root.Performances.Where(x => x.IdSemester == semester.IdSemester) .GroupBy(x => x.IdStudent).OrderBy(x => x.Key.ToString())) { foreach (var item in performances.Where(x => x.Grade == Grade.Незачёт)) { if (_root.Students.FirstOrDefault(x => x.IdStudent == item.IdStudent) == null) { continue; } // заполняем список должников _debtors.Add(new Debtor { IdStudent = item.IdStudent, IdStudyGroup = Helper.GetStudentGroupId(item.IdStudent), IdSemester = item.IdSemester, IdMatter = item.IdMatter }); } } } // заполняем таблицу фильтрованными значениями var panel = GridPanelBuilder.BuildPropertyPanel(_root, new Debtor(), _debtors); GridPanelBuilder.HideButtonsPanel(panel); panel.GridSelectedChanged += Panel_GridSelectedChanged; panel1.Controls.Add(panel); // предыдущую панель убираем if (panel1.Controls.Count > 1) { panel1.Controls.RemoveAt(0); } panel1.Enabled = true; }
/// <summary> /// При выборе специализации заполняем таблицу курсов, применяя два фильтра-селектора /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void cbSpecializations_SelectionChangeCommitted(object sender, System.EventArgs e) { // получаем выбранную специальность var speciality = (Speciality)cbSpecialities.SelectedItem; // получаем выбранную специализацию var specialization = (Specialization)cbSpecializations.SelectedItem; // если один из фильтров не выбран, выходим if (speciality == null || specialization == null) { return; } // заполняем таблицу фильтрованными значениями panel1.Controls.Add(GridPanelBuilder.BuildPropertyPanel(_root, new MattersCourse(), _root.MattersCourses, _root.MattersCourses.FilteredBySpecialityAndSpecialization(speciality.IdSpeciality, specialization.IdSpecialization), new[] { "IdSpeciality", "IdSpecialization" }, new[] { speciality.IdSpeciality, specialization.IdSpecialization })); // предыдущую панель убираем panel1.Controls.RemoveAt(0); panel1.Enabled = true; }
private void tbFind_TextChanged(object sender, EventArgs e) { foreach (var student in _root.Students.Where(x => x.FullName.StartsWith(tbFind.Text, StringComparison.CurrentCultureIgnoreCase))) { var speciality = _root.Specialities.FirstOrDefault(x => x.IdSpeciality == student.IdSpeciality); cbSpecialities.Items.Clear(); foreach (var item in _root.Specialities) { cbSpecialities.Items.Add(item); } cbSpecialities.SelectedItem = speciality; // получаем выбранную специальность speciality = (Speciality)cbSpecialities.SelectedItem; // получаем выбранную специализацию var specialization = _root.Specializations.FirstOrDefault(x => x.IdSpecialization == student.IdSpecialization); // очищаем список специализаций cbSpecializations.Items.Clear(); if (speciality == null) { return; } // заполняем список специализаций только для выбранной специальности foreach (var item in _root.Specializations.Where(x => x.IdSpeciality == speciality.IdSpeciality)) { cbSpecializations.Items.Add(item); } cbSpecializations.SelectedItem = specialization; cbSpecializations_SelectionChangeCommitted(cbSpecializations, new EventArgs()); if (panel3.Controls.Count > 0) { GridPanelBuilder.FindText((GridPanel)panel3.Controls[0], tbFind.Text); } break; } }
/// <summary> /// Обработчик изменения текста в строке поиска по фамилии /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void tstbFind_TextChanged(object sender, EventArgs e) { // вызываем метод поиска по фамилии GridPanelBuilder.FindText(_panel, tstbFind.Text); }