Использование 2 разных колонок базы данных в одном представлении datagridview

Мне нужно отобразить столбец Full Name в DataGridView, но DataSource (datatable) не имеет столбца FullName. У него есть только столбцы FirstName и LastName. Я настраиваю свой DataGridView следующим образом:

Dim column As DataGridViewColumn = New DataGridViewTextBoxColumn()
column.DataPropertyName = "?" //Need FirstName + " " + LastName
column.Name = "FullName"
dgv.Columns.Add(column)

Как я могу установить DataPropertyName, чтобы использовать данные из столбцов FirstName и LastName в таблице данных?

Спасибо.

Используйте другой подход. Добавьте вычисляемый столбец в таблицу данных.

Dim dc as DataColumn = dt.Columns.Add("FullName", System.Type.GetType("System.String"))
dc.Expression = "FirstName + ' ' + LastName"

где dt - это таблица данных, которую вы установили в качестве DataSource вашего DataGridView.

Правила синтаксиса выражений, используемых в вычисляемых колонках, можно найти на этой ссылка на MSDN.. Эти же правила применяются и к другому очень полезному методу: методу DataTable.Select(filterExpression).

Комментарии (3)

Я не думаю, что DataPropertyName работает именно так. http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridviewcolumn.datapropertyname.aspx

Сделайте это на стороне базы данных. В вашем select (синтаксис SQL Server здесь), сделайте FirstName + " " " + LastName as FullName и вы получите столбец FullName вместо двух столбцов.

Если у вас нет доступа к стороне SQL, вы можете манипулировать DataTable и создать свой собственный столбец FullName в коде. Я полагаю, что некоторые LINQ и/или циклы должны сделать это.

Комментарии (0)