WPF добавляет новую строку в заполненную таблицу данных из БД

Итак, я работаю над школьным проектом, используя структуру wpf .net.

У меня есть БД со столбцом: идентификатор, имя, дата, время начала, время окончания, хост.

И в моем программном обеспечении я хочу добавить эти значения в таблицу данных. который работал с использованием MysqlDataAdapter и заполнением таблицы данных.

но теперь, после добавления всех этих значений, я хочу программно добавить новый столбец с именем TotalTime, значения строки этого столбца (endTime — startTime) * 60 для расчета totalTime в минутах.

Я считаю излишним добавлять этот столбец в БД, поэтому я добавил его по коду.

Но проблема, с которой я сталкиваюсь, заключается в том, что когда я заполнил таблицу данных и попытался добавить NewRow в столбец, строки добавят ее в новую строку, а не добавят в первую строку заполненных данных.

Как я могу добавить NewRow в эту сетку данных в строке 1 вместо создания новых пустых строк, таких как изображения.

Заранее спасибо!

Код для заполнения datatable:

public void GetProgrammaOverzicht(int zenderId) { try { Programmas.programmaDataTable.Clear(); var query = $»SELECT naam, datum, begin_tijd, eind_tijd, presentator FROM programmas WHERE zenderId={zenderId}»; ConnectionVariables.conn.Open(); using (MySqlCommand cmdSel = new MySqlCommand(query, ConnectionVariables.conn)) { MySqlDataAdapter da = new MySqlDataAdapter(cmdSel); da.Fill(Programmas.programmaDataTable); } ConnectionVariables.conn.Close(); } catch (Exception ex) { MessageBox.Show(ex.Message); Console.WriteLine(ex.Message); } }

И код, где я добавляю новую строку + вычисляю получение данных из БД

public void CalculateTotalTime(int zenderId) { try { Programmas.beginTijd.Clear(); Programmas.eindTijd.Clear(); var query = $»SELECT begin_tijd, eind_tijd FROM programmas WHERE zenderId={zenderId}»; var cmd = new MySqlCommand(query, ConnectionVariables.conn); ConnectionVariables.conn.Open(); var queryresult = cmd.ExecuteReader(); if (queryresult.HasRows) { while (queryresult.Read()) { Programmas.beginTijd.Add(queryresult.GetString(0)); Programmas.eindTijd.Add(queryresult.GetString(1)); } } else { MessageBox.Show(«Kan duur in minuten niet berekenen»); } queryresult.Close(); ConnectionVariables.conn.Close(); } catch (Exception ex) { ConnectionVariables.conn.Close(); MessageBox.Show(ex.Message); Console.WriteLine(ex.Message); } } private void OpenProgrammaOverzichtBtn(object sender, RoutedEventArgs e) { int currentZenderId; string currentZender; currentZender = this.Name.Remove(0, 6); currentZenderId = Int32.Parse(currentZender); ProgrammaOverzichtDialog.IsOpen = true; zenderClass.GetProgrammaOverzicht(currentZenderId); zenderClass.CalculateTotalTime(currentZenderId); if (Programmas.programmaDataTable.Columns.Contains(«Duur in minuten»)) { Console.WriteLine(«Column duur in minuten bestaat al»); } else { DataColumn column = new DataColumn(); column.ColumnName = «Duur in minuten»; Programmas.programmaDataTable.Columns.Add(column); } DataRow row; for (int i = 0; i < Programmas.beginTijd.Count; i++) { string eind = Programmas.eindTijd[i]; int eindTijd = int.Parse(eind.Remove(2, 3)); string begin = Programmas.beginTijd[i]; int beginTijd = int.Parse(begin.Remove(2, 3)); int totaal = (eindTijd — beginTijd) * 60; row = Programmas.programmaDataTable.NewRow(); row[«Duur in minuten»] = totaal; Programmas.programmaDataTable.Rows.InsertAt(row, i); } programmaOverzichtGrid.DataContext = Programmas.programmaDataTable; } }

И xaml, где находится кнопка для открытия DATAGRID

<materialDesign:DialogHost Name=»ProgrammaOverzichtDialog» Background=»#FF3F3F46″> <materialDesign:DialogHost.DialogContent > <StackPanel> <DataGrid x:Name=»programmaOverzichtGrid» AutoGenerateColumns=»True» ItemsSource=»{Binding}»/> </StackPanel> </materialDesign:DialogHost.DialogContent> <StackPanel HorizontalAlignment=»Center» VerticalAlignment=»Center»> <Button FontSize=»20px» Foreground=»White» Content=»programmaoverzicht» Click=»OpenProgrammaOverzichtBtn» x:Name=»programmaOverzichtBtn»/> </StackPanel> </materialDesign:DialogHost>

Источник: ledsshop.ru

Стиль жизни - Здоровье!