【问题标题】:Working with LINQ to SQL and DataGridView使用 LINQ to SQL 和 DataGridView
【发布时间】:2017-09-14 12:22:49
【问题描述】:

我有一个使用 LINQ-to-SQL 作为数据源的应用程序。我目前正在开发一些用于从数据库中检索记录的扩展功能,并且我想在 DataGridView 组件中正确显示这些记录。我已经显示了记录,但是它们的显示方式有两个问题。具体来说:

  1. 列名与数据库中的相同。我想从用户那里抽象出来,因为他们所做的只是选择他们想要加载到应用程序中的记录。当您在 DataGridView 中显示列名时,有没有办法使用 LINQ-to-SQL 为其设置别名?
  2. DataGridView 的每一行都显示了很多不必要的列。具体来说,我从“标识符”表中选择一条记录,该表与其他各种表有关系,并且这些表在记录视图中显示为对象。有没有办法从 DataGridView 中省略某些列?

如果有人能给我任何帮助,我将不胜感激。

【问题讨论】:

  • 修改您的选择查询(命令文本)。如果要更改列名,请使用“Column 1 as ABC”。也不要使用 * 引用您想要的列名。星号表示所有列。
  • 这是我正在使用的 LINQ 查询。 “as”不是有效的 LINQ 查询关键字。
  • 您可以更改为使用 SQL 查询并使用 DataAdapter 将结果放入 DataTable。 Linq 始终是最好的解决方案。
  • 在这种情况下,LINQ 查询最适合我。
  • 好吧,你不能一边吃蛋糕一边吃。

标签: c# linq


【解决方案1】:

您可以将AutoGenerateColumns 属性值设置为false,这将阻止从数据源生成列。然后将所需的列添加到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

【讨论】:

    【解决方案2】:

    如果您在 WPF 上,请使用数据网格和数据模板

    https://wpftutorial.net/DataGrid.html

    【讨论】:

    • 我正在使用 Winforms,所以很遗憾没有。但在未来,我可能会转换为 WPF。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-26
    • 1970-01-01
    • 1970-01-01
    • 2011-11-18
    • 2011-04-25
    • 1970-01-01
    相关资源
    最近更新 更多