快速提问:C#Winforms数据绑定
我有一个用户控件,我传递一个业务对象给它,以便进行编辑和保存。保存后,用户控件不会被销毁,而是在下一个业务对象传递给它之前隐藏。
问题是我不能刷新数据的控制,除非我这样做:
UsernameTextEdit.DataBindings.Clear();
UsernameTextEdit.DataBindings.Add("EditValue", entityBo, "Username", true, DataSourceUpdateMode.OnPropertyChanged);
LastNameTextEdit.DataBindings.Clear();
LastNameTextEdit.DataBindings.Add("EditValue", entityBo, "LastName", true, DataSourceUpdateMode.OnPropertyChanged);
FirstNameTextEdit.DataBindings.Clear();
FirstNameTextEdit.DataBindings.Add("EditValue", entityBo, "FirstName", true, DataSourceUpdateMode.OnPropertyChanged);
不知道如果我这样做的权利。我相信,它有是一个更好的方式。我其实需要的是某种
UsernameTextEdit.DataBindings.Refresh()
或类似的东西,因为控件已绑定将businessObject性质,我需要的是让他们再次读取该死的值。
有没有这样的事情?我错过了什么吗?
谢谢
==============================
我张贴的BusinessObject的模型虽然我无法捉摸如何做到这一点帮助,因为它工作正常首次
namespace ServiceManager.Bll.Model
{
[Table("Users")]
public class UsersBo : BaseBo
{
[Display(Name = "Nume utilizator")]
[Required(ErrorMessage = "Numele de utilizator este obligatoriu.")]
[MaxLength(100, ErrorMessage = "Numele de utilizator nu poate depăși 100 de caractere.")]
public string Username { get; set; }
[Display(Name = "Parola")]
[Required(ErrorMessage = "Parola este obligatorie.")]
[MaxLength(100, ErrorMessage = "Parola nu poate depăși 100 de caractere")]
public string Password { get; set; }
[Display(Name = "Prenume")]
[Required(ErrorMessage = "Prenumele este obligatoriu")]
[MaxLength(100, ErrorMessage = "Prenumele nu poate depăși 100 de caractere")]
public string FirstName { get; set; }
[Display(Name = "Nume")]
[Required(ErrorMessage = "Numele este obligatoriu.")]
[MaxLength(100, ErrorMessage = "Numele nu poate depăși 100 de caractere.")]
public string LastName { get; set; }
[Display(Name = "E-mail")]
[MaxLength(100, ErrorMessage = "Adresa e-mail nu poate depăși 100 de caractere")]
public string Email { get; set; }
[Display(Name = "Telefon")]
[MaxLength(50, ErrorMessage = "Numărul de telefon nu poate depăși 50 de caractere")]
public string Phone { get; set; }
[Display(Name = "Activ")]
public bool IsActiv { get; set; }
[Display(Name = "Administrator")]
public bool IsAdmin { get; set; }
[ScaffoldColumn(false)]
public DateTime LastUpdate { get; set; }
}
}
======================= ==== 后来编辑:
嗯,你知道当你向某人解释你的问题时会发生什么,并在你说话时弄清楚它会发生什么?
在我的情况是“嘿,我在设置BindingSource的数据源?哦,是的,它是在设计器中设置的。嗯...如果我再次设置它,而不是删除并添加绑定背部?”并猜测是什么,工作。
谢谢你们。
发布您的型号代码。你的模型应该是'INotifyPropertyChanged' – Emad
在你发布的代码中没有证据表明你的模型对象实现了'INotifyPropertyChanged'或者每个属性都有'XXXChanged'事件的旧约定。当源值发生变化时,为了更新绑定的目标,需要一个或另一个。如果这还不足以让您发现问题,则需要解决问题,以便它包含一个可靠地再现问题的良好[mcve]。 –
@PeterDuniho这个问题似乎与单个属性绑定无关。看起来好像OP在问如何重新绑定到不同的对象实例。 –