Получение объекта за выбранной строкой из DataGridView с помощью Linq To Sql - PullRequest
2 голосов
/ 08 июля 2010

Что такое изящный / правильный способ получения сущности Linq за выбранной строкой DataGridView?Я заполняю свой DataGridView следующим образом в форме Событие загрузки:

this.Database = new MyAppDataContext();
var userList = from c in this.Database.Users
                       orderby c.LastName
                       select c;
        this.gridUserList.DataSource = userList;

Затем, в событии DoubleClick формы, я делаю это:быть более элегантным способом получения строки пользователя, на которую дважды щелкнули.

Ответы [ 2 ]

6 голосов
/ 24 июля 2010

Вот лучший вариант, который я нашел:

var selectedUser = (User)this.gridUserList.CurrentRow.DataBoundItem;

Другой вариант, если вы используете BindingSource:

var selectedUser = (User)this.userBindingSource.Current;
1 голос
/ 30 мая 2014

У меня есть привязка MyDataSourceTable к dataGridView1. Код C # выглядит так:

List<MyDataSourceItem> MyDataSourceTable;
bs = new BindingSource();
bs.DataSource = MyDataSourceTable;
dataGridView1.DataSource = bs;

Когда пользователь моей программы выбирает строку на dataGridView1, мы знаем, какая строка, так как у нас есть индекс строки. Используя ответ в приведенной выше публикации, на соответствующую запись в источнике данных ссылается всего одна строка кода:

private void dataGridView1_CurrentCellChanged(object sender, EventArgs e)
{
    if (this.dataGridView1.SelectedRows.Count <= 0) return; // this line prevents exception
    MyDataSourceItem mdsi = (MyDataSourceItem)this.dataGridView1.CurrentRow.DataBoundItem; // Alvin S
    // mdsi now reference the corresponding object on the list
    .
    .
}

Чтобы защитить исключение, создаваемое для объекта null, добавлено предложение if. Ответ Элвина С. очень прямой и объективный. Это ценно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...