Не получайте значение из столбца в сетке, получите значение из фактического datarow, который заполняет сетку.Таким образом, вы можете избежать всех магических струн и т. Д.
Необходимо выполнить небольшой кастинг, потому что [Type]DataRow
скрыт внутри DataView
, прикрепленного к сетке, но он более элегантенподход (и гораздо менее хрупкий в случае будущих изменений), если вы красиво интегрируете его в свой код, а не полагаетесь на магические строки.
Вот мой старый пост в блоге, который подробно описывает, как это сделать:
http://koder.wordpress.com/2010/04/09/getting-data-from-a-winforms-datagridview/
ОБНОВЛЕНИЕ
Вы упомянули, что используете Northwind и что вы просто «перетащили таблицу продуктов в форму», поэтомуЯ предполагаю, что это не критически важная часть программного обеспечения, но для удобства читателей, я просто хотел предположить, что это не будет типичным подходом в реальном приложении.
Обычно в наши дни мы рассматриваем возможность использования доменной модели , возможно, с использованием ORM для получения наших доменных объектов из хранилища данных (конечно, наборы данных не являются настоящим ORM), затемвозможно, используя такие вещи, как MVVM для создания структур данных, оптимизированных для привязки к элементам пользовательского интерфейса из этих доменных объектов.
Используя этот подход, поскольку у вас есть фактические данные для передачи в ViewModel, вы можетевычислять такие правила, как цвета и т. д., из реальных данных, а пользовательский интерфейс просто отображает результаты применения этих бизнес-правил.