2012-05-21 36 views
1

我需要在DataGridView中显示一个名为Full Name的列,但DataSource (datatable)没有FullName列。它只有FirstNameLastName列。我设置了我的DataGridView这样的:在单个datagridview中使用2个不同的数据库列

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

我怎样才能设置DataPropertyName DataTable中使用来自两个FirstNameLastName列中的数据?

谢谢。

+0

史蒂夫的答案是很不错的 - 因为你已经有一个数据表是几乎可以肯定要走的路。尽管如此,值得注意的是,你可以在网格本身计算列http://stackoverflow.com/questions/6097370/calculation-in-datagridview-column –

回答

1

我不认为DataPropertyName是如何工作的。 http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridviewcolumn.datapropertyname.aspx

而是在数据库的这一方面做到这一点。在您选择的SQL Server语法中,执行FirstName + " " + LastName as FullName,您将返回FullName列而不是两列。

如果您无权访问SQL端,则可以操作DataTable并在代码中创建自己的FullName列。我会想象一些LINQ和/或循环应该做的伎俩。

4

使用另一种方法。将计算列添加到您的数据表。

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

其中dt是您设置为DataGridView的DataSource的数据表。

在计算列中使用的表达式语法的规则可以在此link on MSDN处找到。
非常相同的规则也适用于另一个非常有用的方法:在DataTable.Select(filterExpression)方法

+0

不知道你可以做到这一点。很简约。 – Yatrix

+0

@Yatrix,这只是可用语法的一小部分。 [见这里](http://msdn.microsoft.com/en-us/library/system.data.datacolumn.expression.aspx) – Steve

+0

我看到你的答案后已经检查出来。 =)Thx,tho。 – Yatrix

相关问题