Главная страница

БД «Личные данные о студентах». КурсовойПроект Левашов В.Б. ИВТз-171. Программное приложение с базой данных Личные данные о студентах


Скачать 1.16 Mb.
НазваниеПрограммное приложение с базой данных Личные данные о студентах
АнкорБД «Личные данные о студентах
Дата19.01.2022
Размер1.16 Mb.
Формат файлаdocx
Имя файлаКурсовойПроект Левашов В.Б. ИВТз-171.docx
ТипТехническое задание
#336171
страница3 из 5
1   2   3   4   5

3.3 Функции “Добавить/Изменить/Удалить строку”


Ещё одна возможность, которая дана пользователю – это добавление, изменение и удаление строки из таблицы, выделено красным прямоугольником (рисунок 3.3).




Рисунок 3.2 – Добавление, изменение и удаление строк
Данная функция представляет собой столбец “Действие” добавленное в компонент dataGridView при помощи метода LoadData и находящаяся в последнем столбце каждой таблицы. Столбец “Действие”(функция внесения, удаления, изменения данных) работает при помощи написанного кода в событиях CellContentClick, UserAddedRow, CellValueChanged компонента dataGridView и двух методах LoadData и ReloadData. Для обеспечения работы этих событий был написан код программы использующий цикл try-catch. Именно данный код и реализует данные функции. Однако прежде чем смотреть код программы представлю код метода загрузки данных в dataGridView:
private void LoadData()

{

try

{

sqlDataAdapter = new SqlDataAdapter("SELECT *, 'Delete' AS [Действие] FROM [Факультеты]", sqlConnection);
sqlBuilder = new SqlCommandBuilder(sqlDataAdapter);
sqlBuilder.GetInsertCommand();

sqlBuilder.GetUpdateCommand();

sqlBuilder.GetDeleteCommand();
dataSet = new DataSet();
sqlDataAdapter.Fill(dataSet, "Факультеты");
dataGridView1.DataSource = dataSet.Tables["Факультеты"];
for (int i = 0; i < dataGridView1.Rows.Count; i++)

{

DataGridViewLinkCell linkCell = new DataGridViewLinkCell();
dataGridView1[3, i] = linkCell;

}

dataGridView1.Columns[1].Width = 130;

dataGridView1.Columns[2].Width = 160;

dataGridView1.Columns[3].Width = 65;

}

catch (Exception ex)

{

MessageBox.Show(ex.Message, "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Error);

}

}
Метод загрузки данных LoadData необходим для того, чтобы внести данные из таблицы в компонент dataGridView, а так же добавить дополнительный столбец “Действие” с параметрами добавления, изменения, а так же удаления строк данных из таблицы БД.

Далее реализован метод перезагрузки данных в таблице ReloadData и текст кода написанный для него:

private void ReloadData()

{

try

{

dataSet.Tables["Факультеты"].Clear();

sqlDataAdapter.Fill(dataSet, "Факультеты");
dataGridView1.DataSource = dataSet.Tables["Факультеты"];
for (int i = 0; i < dataGridView1.Rows.Count; i++)

{

DataGridViewLinkCell linkCell = new DataGridViewLinkCell();
dataGridView1[3, i] = linkCell;

}

}

catch (Exception ex)

{

MessageBox.Show(ex.Message, "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Error);

}

}

Далее идёт событие CellContentClick, которое обрабатывает любые нажатия на ячейку и где определили какие действия хочет произвести пользователь над таблицей, т.е. на основе действий в колонке “Действие” отображается вариант Insert/Update/Delete:
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)

{

try

{

if (e.ColumnIndex == 3)

{

string task = dataGridView1.Rows[e.RowIndex].Cells[3].Value.ToString();
if (task == "Delete")

{

if (MessageBox.Show("Удалить эту строку?", "Удаление", MessageBoxButtons.YesNo, MessageBoxIcon.Question)

== DialogResult.Yes)

{

int rowIndex = e.RowIndex;
dataGridView1.Rows.RemoveAt(rowIndex);
dataSet.Tables["Факультеты"].Rows[rowIndex].Delete();
sqlDataAdapter.Update(dataSet, "Факультеты");

}

}

else if (task == "Insert")

{

int rowIndex = dataGridView1.Rows.Count - 2;
DataRow row = dataSet.Tables["Факультеты"].NewRow();
row["Код_факультета"] = dataGridView1.Rows[rowIndex].Cells["Наименование"].Value;

row["Название_факультета"] = dataGridView1.Rows[rowIndex].Cells["Название_факультета"].Value;

row["Число_мест_на_факультете"] = dataGridView1.Rows[rowIndex].Cells["Число_мест_на_факультете"].Value;
dataSet.Tables["Факультеты"].Rows.Add(row);
dataSet.Tables["Факультеты"].Rows.RemoveAt(dataSet.Tables["Факультеты"].Rows.Count - 1);
dataGridView1.Rows.RemoveAt(dataGridView1.Rows.Count - 2);
dataGridView1.Rows[e.RowIndex].Cells[3].Value = "Delete";
sqlDataAdapter.Update(dataSet, "Факультеты");

newRowAdding = false;

}

else if (task == "Update")

{

int r = e.RowIndex;
dataSet.Tables["Факультеты"].Rows[r]["Код_факультета"] = dataGridView1.Rows[r].Cells["Код_факультета"].Value;

dataSet.Tables["Факультеты"].Rows[r]["Название_факультета"] = dataGridView1.Rows[r].Cells["Название_факультета"].Value;

dataSet.Tables["Факультеты"].Rows[r]["Число_мест_на_факультете"] = dataGridView1.Rows[r].Cells["Число_мест_на_факультете"].Value;
sqlDataAdapter.Update(dataSet, "Факультеты");

dataGridView1.Rows[e.RowIndex].Cells[3].Value = "Delete";

}
ReloadData();

}

}

catch (Exception ex)

{

MessageBox.Show(ex.Message, "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Error);

}

}
Событие UserAddedRow предназначено для того чтобы обрабатывать событие добавления новой строки, т.е. для того чтобы работала команда “Insert” , так же был написан код реализованный через цикл try-catch.
private void dataGridView1_UserAddedRow(object sender, DataGridViewRowEventArgs e)

{

try

{

if (newRowAdding == false)

{

newRowAdding = true;
int lastRow = dataGridView1.Rows.Count - 2;
DataGridViewRow row = dataGridView1.Rows[lastRow];
DataGridViewLinkCell linkCell = new DataGridViewLinkCell();
dataGridView1[3, lastRow] = linkCell;
row.Cells["Действие"].Value = "Insert";

}

}
catch (Exception ex)

{

MessageBox.Show(ex.Message, "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Error);

}

}

Так же было добавлено событие CellValueChanged для отслеживания изменений в ячейках и работоспособности команды “Update”. Так же реализованное циклом try-catch.

private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)

{

try

{

if (newRowAdding == false)

{

int rowIndex = dataGridView1.SelectedCells[0].RowIndex;

DataGridViewRow editingRow = dataGridView1.Rows[rowIndex];

DataGridViewLinkCell linkCell = new DataGridViewLinkCell();
dataGridView1[3, rowIndex] = linkCell;

editingRow.Cells["Действие"].Value = "Update";

}

}

catch (Exception ex)

{

MessageBox.Show(ex.Message, "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Error);

}

}
3.4 Функция “Обновить”

Так же реализована функция обновления таблицы, т.е. компонента dataGridView. Реализована она следующим образом:

private void toolStripButton1_Click(object sender, EventArgs e)

{

ReloadData();

}

Метод ReloadData() перезагружает таблицу “Факультет” в компоненте dataGridView, тем самым обновляя его.
1   2   3   4   5


написать администратору сайта