【问题标题】:Updating selected row to database with button click通过单击按钮将选定的行更新到数据库
【发布时间】:2016-04-07 15:36:05
【问题描述】:

当我点击按钮 Ponuda 时,我需要更新数据网格中的选定行。

问题是,当我单击按钮时,什么也没有发生,但是当我重新启动应用程序时,整个列表都会更新。所以我需要一种方法来只更新我选择的行并立即更新它,而不是在应用程序重启后更新。

这是我的按钮点击代码:

 private void button3_Click(object sender, RoutedEventArgs e)
        {
           // count = 120;
           // tmr.Start();

            using (SqlConnection conn = new SqlConnection(@"data source=ZC-PC\SQLEXPRESS;database=Aukcija;integrated security=true;"))
            {
                    DataTable cena1 = new DataTable();
                    conn.Open();
                    SqlDataAdapter DA = new SqlDataAdapter(" UPDATE Predmet SET trenutnaCena = trenutnaCena + 1", conn);
                    SqlCommand cmd = new SqlCommand("UPDATE Predmet SET trenutnaCena = trenutnaCena + 1", conn);
                    cmd.ExecuteNonQuery();
                    DA.Update(cena1);
                    conn.Close();

            }

        }

【问题讨论】:

  • 您永远不会更改 dataGrid 中的数据,因此它不会自行更新,您需要重新填充它
  • 我尝试在Da.Update(cena1); 之后添加aukcija_bazeDataGrid.DataContext = aukcijeTable;,但还是一样。 aukcija_bazeDataGrid 是我的DataGrid 的名字。
  • 据我所知,每次更新数据源都要解绑再重新绑定
  • 每次更新时,您都会创建新的DataTable。尝试将cena1 设置为DataGrid 的DataContext。
  • 现在整个DataTable 消失了,虽然重启应用后它仍然更新...

标签: c# wpf datagrid


【解决方案1】:

如果您使用绑定,它应该被更新。它可能不是的原因是,如果您绑定到 DataGrid 的任何对象(应该是 ObservableCollection 或基于一个的类)没有实现 INotifyPropertyChanged,则集合永远不会知道发生了属性更改。

如果您还没有,请实现 INotifyPropertyChanged 并为每个属性引发 OnPropertyChanged 事件。然后,当一个值发生变化时,它会同时反映在 DataGrid 和被绑定的实际集合中。

您需要确保有一个事件在发生这种情况时使用新的集合值更新数据库(我注意到button3_Click 负责处理)。

如果这不起作用,请告诉我,因为它应该。

【讨论】:

  • 抱歉,回复太晚了,你能给我一个我的代码的 PropertyChanged 事件的例子,因为我不是很熟悉吗?
猜你喜欢
  • 1970-01-01
  • 2023-04-04
  • 1970-01-01
  • 2014-01-17
  • 1970-01-01
  • 2016-06-11
  • 2018-02-14
  • 1970-01-01
  • 2013-02-23
相关资源
最近更新 更多