【问题标题】:Displaying non-existing(in database table) column in DataGridView在 DataGridView 中显示不存在的(在数据库表中)列
【发布时间】:2018-10-12 13:51:44
【问题描述】:

我有一个表“员工”,上面有名字、姓氏、出生日期等等。

此表不包含Age 列,但我需要在DataGridView 中计算并显示年龄并带有名称。

像这样:

John  30 

Mary  25 

问题是当我执行查询时

select FirstName, DATEDIFF(yy, DateOfBirth, GETDATE()) as Age from Empoyee

在 SQL Server 中,我得到了我需要的东西,但是当我尝试填充 DataGridView 时,Age 列显示不正确。

edDataGridView.AutoGenerateColumns = false;
edDataGridView.DataSource = context.Empoyee.SqlQuery("SELECT FirstName, DATEDIFF(yy, DateOfBirth, GETDATE()) as Age from Empoyee").ToList();

请告诉我如何正确执行此操作。也许我应该使用 LINQ?

【问题讨论】:

  • 您能否详细说明正在显示的内容以及您认为应该显示的内容?
  • 我明白了,显示不正确是因为 AutoGeneratingColumns,然后我将其设置为 false 并且没有显示任何内容。所以我想我需要在DataGridView中添加一些列,但是如何绑定Age列呢?
  • DataGridView 中出现了一些东西——你说它“显示不正确”——但是显示的是什么?怎么错了?
  • 您是否创建了DataGridViewColumn 并设置了DataPropertyName?您是否将 DataGridViewColumn 添加到 DataGRidView?
  • @ХарламовДаниил 你说当你设置AutoGeneratingColumns = true时它有效。除非有理由将其设置为false,否则将其保留在true,一切都很好。没问题,没问题

标签: c# sql-server entity-framework linq


【解决方案1】:

自己解决了,谢谢大家))

        edDataGridView.AutoGenerateColumns = false;

        var query = from e in context.Empoyee
                    select new
                    {
                        e.FirstName, Age = DateTime.Now.Year - e.DateOfBirth.Year
                    };

        edDataGridView.DataSource = query.ToList();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-19
    • 1970-01-01
    • 2011-01-26
    • 1970-01-01
    • 2012-03-21
    • 2014-03-09
    • 2017-07-04
    相关资源
    最近更新 更多