работа с выбранной строкой DataGridView в C # - PullRequest
1 голос
/ 03 ноября 2011

Есть ли способ приведения / преобразования текущей выбранной строки в сетке данных в пользовательский объект?

Например, я пытаюсь привести выбранную строку к объекту типа Client, однако,Я не могу сделать это, используя этот метод.

DataGridViewSelectedRowCollection rows = dgvClient.SelectedRows;
foreach (DataGridViewRow r in rows)
{
    DataRow myRow = (r.DataBoundItem as DataRowView).Row;
    Client current = (Client)myRow;
}

Ответы [ 2 ]

2 голосов
/ 03 ноября 2011

Вы также можете использовать неявный и явный оператор, например,

class Client
{
   public static explicit operator Client(DataRow dr)
   {
      // code to convert from dr to Client
   }
}

Client current = (Client)myRow;

, аналогично, вы можете перегрузить неявный.С неявным оператором вы конвертируете автоматически, без приведения

0 голосов
/ 03 ноября 2011

Нет, поскольку DataRow не имеет отношения к Client - т. Е. Клиент не является производным от DataRow.
Редактировать : Я исправлен, вы можете предоставить явный метод приведения как@ Ананд объясняет.Я бы порекомендовал это, если источник Client недоступен.В противном случае ...

У меня был проект в VB.Net, который использовал List в качестве источника данных для DataGridView.Что было интересно, так это то, что я смог привести выбранную строку к SomeEntity.

Я рекомендую предоставить конструктор, в данном случае для Client, который принимает DataRow в качестве параметра.Назначьте значения из строки и покончите с этим:

Client current = new Client(myRow);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...