//Закрытый метод для обработки события изменения данных в ячейки таблицы private static void CellEdited(object sender, DataGridViewCellEventArgs e) { /*Нужно обработать изменение данных в ячейке * 1. Столбцы в строке должны быть заполнены * 2. Находим название группы * 3. Идентифицируем человека (по фио, датам и т.д.) * 4. узнаем параметр который изменился */ DataGridView dataGrid = (DataGridView)sender; int Col = e.ColumnIndex; int Row = e.RowIndex; bool IsFilled = true; List <string> listParams = new List <string>(); for (int i = 0; i < dataGrid.ColumnCount; i++) { string value = dataGrid.Rows[Row].Cells[i].Value.ToString(); if (value == "") { IsFilled = false; } listParams.Add(value); } //Если строка заполнена полностью if (IsFilled) { string GroupName = dataGrid.Rows[Row].Cells[0].Value.ToString(); var group = GroupsArray.FindGroup(GroupName); int count = 0; int pointer = 0; foreach (var memb in group.members) { count = 0; //Ищем совпадение по 7 пунктам из 8 if (memb.FIO == listParams[1]) { count++; } else { pointer = 1; } if (memb.Rank == listParams[2]) { count++; } else { pointer = 2; } if (memb.YearOfBirth == listParams[3]) { count++; } else { pointer = 3; } if (memb.HomeAddress == listParams[4]) { count++; } else { pointer = 4; } if (memb.PlaceOfWork == listParams[5]) { count++; } else { pointer = 5; } if (memb.TurnoutAddress == listParams[6]) { count++; } else { pointer = 6; } if (memb.Company == listParams[7]) { count++; } else { pointer = 7; } if (memb.VusNumber == listParams[8]) { count++; } else { pointer = 8; } //Если нашли, то записываем измененный параметр в память if (count == 7) { MessageBox.Show("Success"); switch (pointer) { case 1: memb.FIO = listParams[1]; SQLite.UpdateMemberInfo("FIO", listParams[1], "Adress", listParams[4]); break; case 2: memb.Rank = listParams[2]; SQLite.UpdateMemberInfo("_rank", listParams[2], "FIO", listParams[1]); break; case 3: memb.YearOfBirth = listParams[3]; break; case 4: memb.HomeAddress = listParams[4]; SQLite.UpdateMemberInfo("Adress", listParams[4], "FIO", listParams[1]); break; case 5: memb.PlaceOfWork = listParams[5]; SQLite.UpdateMemberInfo("WorkPlace", listParams[5], "FIO", listParams[1]); break; case 6: memb.TurnoutAddress = listParams[6]; SQLite.UpdateMemberInfo("TurnoutAdress", listParams[6], "FIO", listParams[1]); break; case 7: memb.Company = listParams[7]; SQLite.UpdateMemberInfo("Company", listParams[7], "FIO", listParams[1]); break; case 8: memb.VusNumber = listParams[8]; SQLite.UpdateMemberInfo("Vus", listParams[8], "FIO", listParams[1]); break; default: break; } } //ВВОД ПОСРЕДСТВОМ ДОБАВЛЕНИЯ НОВОЙ СТРОКИ НЕ ПРЕДУСМОТРЕН } } //Id; //"ФИО"; //"Звание"; //"Год рождения"; //"Домашний адрес"; //"Место работы"; //"Явиться по адресу"; //"Компания"; //"ВУС №"; }
private void AddButton_Click(object sender, EventArgs e) { //Массив параметров string[] List = { FIOtextBox.Text, RankComboBox.SelectedItem.ToString(), $"{DateOfBirth.Value.Day:0#}.{DateOfBirth.Value.Month:0#}.{DateOfBirth.Value.Year}", HomeAdresstextBox.Text, WorkPlacetextBox.Text, TurnoutAddresstextBox.Text, CompanytextBox.Text, VusNumbtextBox.Text }; bool IsChanged = false; for (int i = 0; i < List.Length; i++) { if (pars[i] != List[i]) { IsChanged = true; } } //Если внесли изменения if (IsChanged) { //MessageBox.Show("Changed"); Member OldMember = new Member() { FIO = pars[0], Rank = pars[1], YearOfBirth = pars[2], HomeAddress = pars[3], PlaceOfWork = pars[4], TurnoutAddress = pars[5], Company = pars[6], VusNumber = pars[7] }; Member NewMember = new Member() { FIO = FIOtextBox.Text, Rank = RankComboBox.SelectedItem.ToString(), YearOfBirth = $"{DateOfBirth.Value.Day:0#}.{DateOfBirth.Value.Month:0#}.{DateOfBirth.Value.Year}", HomeAddress = HomeAdresstextBox.Text, PlaceOfWork = WorkPlacetextBox.Text, TurnoutAddress = TurnoutAddresstextBox.Text, Company = CompanytextBox.Text, VusNumber = VusNumbtextBox.Text }; //TODO: //Обновить в списке var group = GroupsArray.FindGroup(GroupName); for (int i = 0; i < group.members.Count; i++) { var memb = group.members[i]; if ( (memb.FIO == OldMember.FIO) && (memb.Rank == OldMember.Rank) && (memb.YearOfBirth == OldMember.YearOfBirth) && (memb.HomeAddress == OldMember.HomeAddress) && (memb.PlaceOfWork == OldMember.PlaceOfWork) && (memb.TurnoutAddress == OldMember.TurnoutAddress) && (memb.Company == OldMember.Company) && (memb.VusNumber == OldMember.VusNumber) ) { group.members[i].FIO = OldMember.FIO; group.members[i].Rank = OldMember.Rank; group.members[i].YearOfBirth = OldMember.YearOfBirth; group.members[i].HomeAddress = OldMember.HomeAddress; group.members[i].PlaceOfWork = OldMember.PlaceOfWork; group.members[i].TurnoutAddress = OldMember.TurnoutAddress; group.members[i].Company = OldMember.Company; group.members[i].VusNumber = OldMember.VusNumber; break; } } //Обновить таблицу for (int i = 0; i < List.Length; i++) { dataGrid.SelectedRows[0].Cells[i + 1].Value = List[i]; } //Обновить БД SQLite.UpdateMemberInfo(OldMember, NewMember); Close(); } if (!IsChanged) { //MessageBox.Show("Not changed"); Close(); } }