2017-09-14 115 views
0

我有一個應用程序,我在其中使用LINQ to SQL作爲數據源。我目前正在研究用於從數據庫中檢索記錄的一些擴展功能,並且我想在DataGridView組件中正確顯示這些記錄。我已經有記錄顯示,但是我有他們如何顯示兩個問題。具體而言:使用LINQ to SQL和DataGridView

  1. 列名與數據庫中的名稱相同。我想從用戶那裏抽象出來,因爲他們所做的只是選擇他們想要加載到應用程序中的記錄。當你在DataGridView中顯示列名時,有沒有使用LINQ-to-SQL來替換列名的方法?
  2. 在DataGridView的每一行中都會顯示大量不必要的列。具體而言,我從「標識符」表中選擇一條記錄,該表與其他各種表有關,並且這些表在記錄視圖中顯示爲對象。有沒有辦法從DataGridView中省略某些列?

我很感謝任何幫助的人可以給我。

+0

修改您的選擇查詢(命令文本)。如果要更改列名稱,請使用「列1作爲ABC」。而不是使用*引用你想要的列名。星號正在引入所有列。 – jdweng

+0

這是我正在使用的LINQ查詢。 「as」不是有效的LINQ查詢關鍵字。 –

+0

那麼您可以更改爲使用SQL查詢並使用DataAdapter將結果放入DataTable中。 Linq始終是最好的解決方案。 – jdweng

回答

0

您可以AutoGenerateColumns屬性值設置爲false,這將防止從數據源生成列使用DataGrid和DataTemplate中。然後添加你想要的列DataGridView,然後設置列到你的數據源中的列名的DataPropertyName屬性(例如,如果DataTable對象 - 設置DataTable列名[要顯示])例如:

dataGridView1.AutoGenerateColumns = false; 

dataGridView1.Columns.Add("Col1", "Column1"); 
dataGridView1.Columns.Add("Col2", "Column2"); 
dataGridView1.Columns.Add("Col3", "Column2"); 
. . . 

dataGridView1.Columns["Col1"].DataPropertyName = "Col1NameFromSource"; 
dataGridView1.Columns["Col2"].DataPropertyName = "Col2NameFromSource"; 
dataGridView1.Columns["Col3"].DataPropertyName = "Col3NameFromSource"; 
. . . 

然後,只需綁定的源DataGridviewDataSource

DataTable table = /*Your "LINQ-to-SQL" query;*/ 
dataGridView1.DataSource = table; 

假設,你table包含Col1NameFromSourceCol2NameFromSourceCol3NameFromSource

+0

非常感謝!完美的作品。 :) –

+0

不客氣! :) – SeM