1

现在,我根据实体模型的对象上下文创建了一个新的对象数据源。然后,我创建了一个 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;
}
4

1 回答 1

0

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

您可能需要将数据源设置为空,清除列集合,然后设置数据源。事实上,一个更好的主意是显式创建列而不是自动生成它们。

于 2010-06-22T05:55:26.777 回答