Привязка данных к свойству, которое я создаю в .Net 2.0 - PullRequest
1 голос
/ 04 мая 2009

Я делаю некоторые привязки в .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

1 Ответ

0 голосов
/ 04 мая 2009

Я решил: свойство должно быть общедоступным, и вам нужно добавить атрибут BindableAttribute к свойству, например:

[Bindable(true)]
public Guid SetID { get; set; }
...