如何自动更新绑定到TextBox的TableAdapter

时间:2010-02-03 17:02:19

标签: wpf windows database binding

我有一个带有几个TextBox的WPF窗口。

我有一个附加到SQL Server数据库的XSD数据集,窗口绑定到tableadapter中的一行:

  public partial class PersonForm : Window
  {
    public PersonForm(int id)
    {
      InitializeComponent();

      MyDatasetTableAdapters.personTableAdapter tableAdapter = 
        new MyDatasetTableAdapters.personTableAdapter();

      personRow row = tableAdapter.GetPersonById(id);

      this.DataContext = row;
    }

    ...

  }

文本框的绑定方式如下:

<TextBox Name="lastName" Text="{Binding Path=lastname}" />

这些绑定绑定正常工作,文本框正确填充了SQL数据库中的数据,但是在编辑文本框时,更改不会传播回数据库。

我有一个按钮,点击后调用

myTableAdapter.Update(myRow);

这确实成功更新了SQL数据库。

我的问题是:我需要做出哪些更改才能使文本框自动更新数据库(无需显式调用TableAdapter.Update)。

另外,这是在WPF中将表单绑定到数据库的正确方法吗?

1 个答案:

答案 0 :(得分:0)

我发现了一种方法来实现这一目标。

通过在文本框绑定上将 NotifyOnSourceUpdated 属性设置为True,如下所示:

<TextBox Name="lastName" Text="{Binding Path=lastname, NotifyOnSourceUpdated=True}" />

然后我可以在Window的SourceUpdated事件中更新表适配器,如下所示:

private void Window_SourceUpdated(object sender, DataTransferEventArgs e)
{
  myTableAdapter.Update(myRow);
}

这似乎运作良好。有没有更好的方法来实现这一目标?

有没有办法在所有文本框上轻松启用 NotifyOnSourceUpdated ,而无需在每个TextBox上指定它?