如何将查询与连接绑定到DataGridView?

时间:2010-06-22 05:45:32

标签: c# datagridview linq-to-entities ado.net-entity-data-model

现在,我已经从实体模型的对象上下文创建了一个新的Object数据源。然后我创建了一个BindingSource和一个设置为此BindingSource的DataGridView。

我可以添加与TraceLine表中的数据绑定的列。当我设置DataSource时,我会看到这些列中的值。但是,我似乎无法从连接表中获取数据。如何将DataGridView绑定到具有连接的查询?

using (var entities = new MyEntities())
{
    var lines = from t in entities.Lines
                join m in entities.Methods on t.MethodHash equals m.MethodHash
                where t.UserSessionProcessId == m_SessionId
                select new
                {
                    m.Name,  // doesn't get displayed in DataGridView, but I want it to
                    t.Sequence,
                    t.InclusiveDuration,
                    t.ExclusiveDuration
                };

    dgvBindingSource.DataSource = lines;
}

1 个答案:

答案 0 :(得分:0)

一个可能的问题是DataGridView可能在设计时将其DataSource设置为其中一种类型,但在运行时,您将其设置为具有额外成员的匿名类型。如果我记得,如果在生成列之后更改数据源,DataGridView将不会重新生成列。

您可能需要将数据源设置为null,清除列集合,然后设置数据源。实际上,更好的想法是明确创建列而不是自动生成它们。