У меня есть DataGridView, который я привязываю к POCO. У меня привязка данных работает нормально. Однако я добавил столбец со списком, который я хочу, чтобы он был разным для каждой строки. В частности, у меня есть сетка купленных предметов, некоторые из которых имеют размеры (например, Adult XL, Adult L), а другие предметы не имеют размеров (например, Car Magnet.)
По сути, я хочу изменить ИСТОЧНИК ДАННЫХ для столбца со списком в сетке данных. Это может быть сделано?
К какому событию я могу подключиться, что позволило бы мне изменять свойства определенных столбцов ДЛЯ КАЖДОГО РЯДА? Приемлемой альтернативой является изменение свойства, когда пользователь щелкает или вкладывает строку. Что это за событие?
Сет
EDIT
Мне нужно больше помощи с этим вопросом. С помощью Triduses я ТАК близко, но мне нужно немного больше информации.
Во-первых, в соответствии с вопросом, действительно ли событие CellFormatting является лучшим / единственным событием для изменения источника данных для столбца со списком. Я спрашиваю, потому что я делаю что-то довольно ресурсоемкое, а не просто форматирую ячейку.
Во-вторых, событие форматирования ячейки вызывается просто при наведении курсора мыши на ячейку. Я попытался установить свойство FormattingApplied внутри моего if-block , а затем проверяю его в if-test , но это возвращает странное сообщение об ошибке. Моя идеальная ситуация - применить источник данных для поля со списком один раз для каждой строки, а затем покончить с этим.
Наконец, чтобы установить источник данных для поля со списком, я должен иметь возможность привести ячейку внутри моего блока if к типу DataGridViewComboBoxColumn, чтобы я мог заполнить его строками или установить источник данных или что-то еще. Вот код, который у меня есть сейчас.
Private Sub ProductsDataGrid_CellFormatting(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellFormattingEventArgs) Handles ProductsDataGrid.CellFormatting
If e.ColumnIndex = ProductsDataGrid.Columns("SizeDGColumn").Index Then ' AndAlso Not e.FormattingApplied Then
Dim product As LeagueOrderProductInfo = DirectCast(ProductsDataGrid.Rows(e.RowIndex).DataBoundItem, LeagueOrderProductInfo)
Dim sizes As LeagueOrderProductSizeList = product.ProductSizes
sizes.RemoveSizeFromList(_parentOrderDetail.SizeID)
'WHAT DO I DO HERE TO FILL THE COMBOBOX COLUMN WITH THE sizes collection.
End If
End Sub
Пожалуйста, помогите. Я полностью застрял, и этот предмет задачи должен был занять час, а сейчас у меня 4+ часа. Кстати, я также открыт для решения этой проблемы, взяв с собой совершенно другое направление (пока я могу сделать это быстро.)
Сет