当source是IQueryable对象时,访问bindingsource.Current的内容

时间:2010-12-28 16:16:18

标签: c# entity-framework-4 bindingsource

目前我的存储库返回一个IQueryable对象,该对象列出了我的数据库中的数据,并将其绑定到BindingSource以便在网格中使用:

public void BindTo(IQueryable elements)
{
    BindingSource source = new BindingSource();
    source.CurrentChanged += new EventHandler(source_CurrentChanged);
    source.DataSource = elements;

    elementNavigator.BindingSource = source;
    elementGridView.DataSource = source;
}

这很有效。但是,当用户单击网格中的行时,我想要做一些事情。我正在努力识别用户正在选择的元素。我有以下内容:

在我看来:

private void source_CurrentChanged(object sender, EventArgs e)
{
    _presenter.ElementChanged(sender, e);
}

在演讲者中:

public void ElementChanged(object sender, EventArgs e)
{
    BindingSource source = (BindingSource)sender;
    // Here I need to get the ID of the selected element in the source.Current property.
    // HOW?
}

这似乎工作正常 - 我可以看到调试时source.Current包含数据:

? source.Current
{ BodyId = 1, IsInUse = true, IsValid = true, CreateDate = {04/07/2006 09:31:59}, LastUpdateDate = {04/07/2006 09:31:59}, StatusDescShort = "Exist" ... }
BodyId: 1
CreateDate: {04/07/2006 09:31:59}
IsInUse: true
IsValid: true
LastUpdateDate: {04/07/2006 09:31:59}
StatusDescShort: "Exist"

但我不知道如何访问BodyId的值。我有一种感觉,我错过了一些非常明显的东西(不是第一次)。

1 个答案:

答案 0 :(得分:2)

我很惊讶你没有使用像IQueryable<MyType>这样的东西。

因为这会是一个简单的转换问题:source.Current as MYType

也许可以消除中间的DataRowView