Я делаю некоторые привязки в .Net 2.0. Это было хлопот! У меня есть DataTable (я пытался использовать DataRow, но у него не было ничего из этого) и BindingNavigator (который казался магическим ингредиентом) с BindingSource, и я программно привязываю к нему элементы управления. Однако один из моих столбцов - это идентификатор, который я, конечно, не хочу показывать пользователю, но мне все еще нужно, чтобы он был легко доступен. Поскольку я использую идентификатор для дополнительных вызовов к базе данных, я также хотел, чтобы он выполнял эти вызовы при изменении.
Я думал создать собственное свойство в виде кода соответствующего типа, а затем привязать к нему. Это не работает, хотя привязка к свойствам текстового поля с использованием того же кода делает. Почему нет?
Вот некоторый код в моем UserControl, чтобы вы могли видеть, что я делаю:
Guid SetID { get; set; }
//...
DataTable SetTable = DatabaseObject.GetDataTable(tablename)
SetTable.DefaultView.Sort = "DisplayName ASC";
SetBinder.DataSource = SetTable;
foreach (DataColumn column in SetTable.Columns)
{
if (!Controls.ContainsKey("in" + column.ColumnName)) continue;
//This code's mostly here so I don't have to have a list of controls
//with bindings for each when it's mostly the same for all of them.
Controls["in" + column.ColumnName].DataBindings.Add("Text", SetBinder, column.ColumnName);
}
this.DataBindings.Add("SetID", SetBinder, "SetID"); //doesn't work