Мне нужно отобразить столбец 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).
Я не думаю, что 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 и/или циклы должны сделать это.