C # Привязка TextBox к определенной строке DataTable - PullRequest
1 голос
/ 10 октября 2010

Я создаю простое приложение на C #, которое позволяет пользователю редактировать строки таблицы в базе данных.Интерфейс очень прост, это в основном список строк и несколько кнопок.При выборе строки и нажатии кнопки «Добавить» появляется новая форма с текстовыми полями для каждого столбца.Я хочу, чтобы эти столбцы заполнялись значениями для выбранной строки.

Прочитав несколько статей, я обнаружил, что, вероятно, самый простой способ сделать это - привязать свойство Text TextBox к DataSource.Поэтому я храню значения из базы данных в объекте DataTable с планом получения выбранного DataRow и привязки его к TextBox.Я использую эту строку:

productNameTextBox.DataBindings.Add(new Binding("Text", productRow, "Name"));

Результатом является следующее исключение:

Первое исключение типа «System.ArgumentException» произошло в System.Windows.Forms.dll Не удается привязать к имени свойства или столбца в источнике данных.Имя параметра: dataMember

И да, столбец «Имя» существует.

После прочтения по документации привязок (http://msdn.microsoft.com/en-us/library/4wkkxwcz(v=VS.80).aspx) и многих примеров, мне кажетсячто необходимо связать с DataTable, в котором содержится строка. У меня работал следующий код:

productNameTextBox.DataBindings.Add(new Binding("Text", productRow.Table, "Name"));

За исключением того, что он всегда устанавливает значение TextBox в первой строке. Как мне указать, какойстрока для использования?

1 Ответ

1 голос
/ 10 октября 2010

Вместо строки используйте DataRowView, полученный из DataView. Iirc это настроено для гибкого (пользовательского) связывания, через ICustomTypeDescriptor.

...