2010-10-09 10 views
1

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

После прочтения нескольких статей, я обнаружил, что, вероятно, простой способ сделать это - привязать свойство Text Text к тексту 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

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

+0

А, спасибо. Я фактически получаю свой DataRow из DataRowView, который возвращается выбранным элементом списка. Я попробую. – kkrizka

+0

Работает красиво. Благодаря! – kkrizka

Смежные вопросы