Привязать несколько списков к DataGridView - PullRequest
3 голосов
/ 20 июня 2011

У меня есть два статических списка, которые должны быть связаны с DataGridView вместе с двумя полями кнопок. Я мог связать только один список и поле кнопки. Можно ли связать более одного списка с DataGridView?

ServiceController objSAVAdminService = new ServiceController("SAVAdminService");
ServiceController objSAVService = new ServiceController("SAVService");
ServiceController objPPVService = new ServiceController("PPVService");
ServiceController objMLLService = new ServiceController("MLLService");

List<string> ServiceName = new List<string>();
List<string> ServiceStatus = new List<string>();

ServiceName.Add(objSAVService.ServiceName.ToString());
ServiceName.Add(objSAVAdminService.ServiceName.ToString());
ServiceName.Add(objPPVService.ServiceName.ToString());
ServiceName.Add(objMLLService.ServiceName.ToString());

ServiceStatus.Add( objSAVService.Status.ToString());
ServiceStatus.Add( objSAVAdminService.Status.ToString());
ServiceStatus.Add( objPPVService.Status.ToString());
ServiceStatus.Add( objMLLService.Status.ToString());

Мне нужно связать эти два списка с DataGridView, а также двумя кнопками в каждом ряду, чтобы запустить или остановить соответствующую службу.

Ответы [ 2 ]

4 голосов
/ 20 июня 2011

Из коробки отсутствует поддержка привязки данных DataGridView и двух списков.Я вижу две основные опции, доступные вам:

  1. Отменить привязку данных - вам не нужно устанавливать список для DataGridView DataSource свойство и полагаться на DataBinding, чтобы все работало.Вместо этого вы можете работать в режиме unbound и писать код для перемещения данных вперед и назад.Посмотрите на этот простой пример на MSDN .

  2. Создание пользовательского объекта - Если вы хотитеДля удобства привязки данных вы можете создать некоторый объект, который объединит два списка, а затем привязать к нему.Если вам нужна только односторонняя привязка данных (без обновления данных в списках при изменении DataGridView), вы даже можете сделать это с помощью одного простого запроса LINQ.В противном случае вы можете написать какой-то особый объект, который действует как обертка над двумя списками - если вы хорошо его спроектируете, у вас должна быть возможность полного двухстороннего связывания данных над двумя списками.

1 голос
/ 17 сентября 2011

Есть еще один вариант, потому что вы используете 2 списка строк, Вы можете сделать это

List<string> BindList = new List<string>();
BindList.AddRange(ServiceName);
BindList.AddRange(ServiceStatus);
foreach(string item in BindList)
{
Datagridview1.Rows.Add(item.objSAVService,item.objSAVAdminService.....)
}
...