我有一个绑定导航器,我用它来添加/编辑项目。 我遇到的问题是当我点击保存按钮(我添加到工具栏的按钮)时,我的绑定似乎没有生效。此代码加载并绑定我的数据。
private void CompanyForm_Load(object sender, EventArgs e)
{
// Loads all of the companies
companies = new BindingList<Company>(PersistenceManager.Instance.RetrieveAll<Company>()));
companies.AllowNew = true;
companies.AllowEdit = true;
bindingSource.DataSource = companies;
// Add our bindings
companyIdTextBox.DataBindings.Add("Text", companies, "Id");
companyNameTextBox.DataBindings.Add("Text", companies, "Name");
}
单击保存按钮时会运行此代码:
private void toolStripSaveButton_Click(object sender, EventArgs e)
{
// If we have no binding source, then we cannot save
if (null == bindingSource.Current)
{
return;
}
Company company = bindingSource.Current as Company;
// Save our company
PersistenceManager.Instance.Save<Company>(company);
}
问题是当我点击保存按钮时,当前项目永远不会使用输入中的数据进行更新。
我只是错过了一些愚蠢的事情吗?
答案 0 :(得分:2)
添加绑定时,请尝试这样做......
companyIdTextBox.DataBindings.Add("Text", companies, "Id", true, DataSourceUpdateMode.OnPropertyChanged);
companyNameTextBox.DataBindings.Add("Text", companies, "Name", true, DataSourceUpdateMode.OnPropertyChanged);
默认情况下, DataSourceUpdateMode 设置为 OnValidation ;也许 OnValidation 事件在您的情况下不会触发。如果这是问题,将 DataSourceUpdateMode 设置为 OnPropertyChanged 应该可以解决问题。
答案 1 :(得分:0)
我假设您的持久性存储是一个数据库?在VS解决方案资源管理器中,查看数据库文件的属性,并检查“复制到输出目录”是否未设置为“始终复制”。每次构建项目时,这都会覆盖工作目录中的数据库......