Доступ к содержимому bindingsource.Current, когда источником является объект IQueryable - PullRequest
0 голосов
/ 28 декабря 2010

В настоящее время мой репозиторий возвращает объект 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 Ответ

2 голосов
/ 28 декабря 2010

Я удивлен, что вы не используете что-то вроде IQueryable<MyType>.

Потому что тогда это будет простой вопрос приведения: source.Current as MYType

И, возможно, устранит промежуточный DataRowView

...