BindingNavigator问题?

时间:2009-09-12 16:06:02

标签: c# data-binding

我有一个绑定导航器,我用它来添加/编辑项目。 我遇到的问题是当我点击保存按钮(我添加到工具栏的按钮)时,我的绑定似乎没有生效。此代码加载并绑定我的数据。

        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);
        }

问题是当我点击保存按钮时,当前项目永远不会使用输入中的数据进行更新。

我只是错过了一些愚蠢的事情吗?

2 个答案:

答案 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解决方案资源管理器中,查看数据库文件的属性,并检查“复制到输出目录”是否未设置为“始终复制”。每次构建项目时,这都会覆盖工作目录中的数据库......