示例#1
0
        //Закрытый метод для обработки события изменения данных в ячейки таблицы
        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();
            }
        }