В настоящее время мой репозиторий возвращает объект 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
.У меня такое чувство, что я упускаю что-то действительно очевидное здесь (не в первый раз).