Kasthuri Gunabalasingam Ответов: 1

Datagridview не обновляет значения при нажатии кнопки в WPF


В моем приложении есть два окна . Главное окно содержит один вид таблицы данных и одну кнопку (Добавить). при нажатии кнопки открывается еще одно окно, содержащее 2 текстовых поля и кнопку.

В окне 2, при нажатии кнопки, значения текстового поля нужно отправить и отобразить в главном окне DataGrid!

Это 2 файла!

public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void btn_Add_Click(object sender, RoutedEventArgs e)
        {
            Window1 win = new Window1(this);
            win.Show();
        }

    }



файл window1.в CS
 public Window1()
            {
                InitializeComponent();     
            }
            private MainWindow m = null;
            public Window1(Window callingFrom)
            {
                m = callingFrom as MainWindow;
                InitializeComponent();
                DataTable dt = new DataTable();
                dt.Columns.Add("Name");
                dt.Columns.Add("ID");
                DataRow dr = dt.NewRow();
                m.dataGrid1.ItemsSource = dt.DefaultView;
                m.dataGrid1.UpdateLayout();
            }
      private void btn_Click(object sender, RoutedEventArgs e)
            {
                DataView dv = m.dataGrid1.ItemsSource as DataView;

                DataTable dt = dv.Table;
                DataRow dr = dt.NewRow();
                dr["Name"] = txt1.Text;
                dr["ID"] = txt2.Text;
                dt.Rows.Add(dr);
               // this.Close();
                m.dataGrid1.UpdateLayout();
            }

}


Что я уже пробовал:

Проблема в том, что когда вы закрываете window1 и снова открываете window1, чтобы добавить значения в представление таблицы данных, представление datagrid главного окна заменяется вместо добавления значений! (Он обновляет значения одно за другим до закрытия окна 1 )

Как можно это разрешить!

Спасибо!

1 Ответов

Рейтинг:
10

pravinchopade

Как я понимаю, проблема заключается в том, что через window1 вы обновляете datagrid mainwindow; и после закрытия window1 и открытия его снова ваша datagrid очищается.

Как это правильно, так и происходит из-за

DataTable dt = new DataTable();
dt.Columns.Add("Name");
dt.Columns.Add("ID");
DataRow dr = dt.NewRow();
m.dataGrid1.ItemsSource = dt.DefaultView;


в этой строке вы создаете новый datatable и добавляете его как itemsource в datagrid.

Таким образом, решение состоит в том, чтобы отправить существующий itemsource как datatable и обновить его в window1, и он будет отражать.