2012-05-21 31 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

相關問題