2017-09-14 77 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