#.net #datagridview
#.net #datagridview
Вопрос:
При использовании DataGridView.AutoGenerateColumns = True, логическое свойство связанного объекта обновляется нормально, но не при добавлении столбцов вручную. Значения остаются ложными.
Есть ли какие-то параметры, которые мне нужно установить при добавлении столбца DataGridViewCheckBoxColumn? Кажется, недостаточно установить .DataPropertyName.
Я вижу, что у него есть некоторые другие свойства, такие как.Истинное значение, .FalseValue и т.д., Но не уверен, для чего они нужны?
Или мне нужно написать какой-то тип пользовательских событий форматирования / проверки ячеек?
Редактировать: Я добавляю столбец методом расширения:
<Extension()> _
Public Sub AddCheckBoxColumn(ByVal dgv As DataGridView, ByVal propertyName As String, ByVal colName As String, ByVal fillWeight As Integer)
Dim col As New DataGridViewCheckBoxColumn(False)
col.HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
col.HeaderText = colName
col.Name = colName
col.Width = fillWeight
col.DataPropertyName = propertyName
dgv.Columns.Add(col)
End Sub
Комментарии:
1. Можете ли вы показать разметку и исходный код, если добавите их вручную в code behind?
2. Я не знаком с выражением «code behind»? Это проект Windows Forms. Но добавлен некоторый код выше.
3. Запускаете ли вы DataBind () в своей сетке после добавления столбца?
Ответ №1:
Возможно, вы неправильно написали имя связанного поля? Это должно работать до тех пор, пока ваш столбец данных имеет логический тип.
В противном случае значение TrueValue будет выражать значение, устанавливаемое при установленном флажке, а FalseValue будет выражать значение, когда флажок не установлен, например, вы могли бы сопоставить строки «Checked» и «Unchecked» с полем типа string.
- Правильно ли выполняется чтение из поля?
- Можете ли вы установить флажок, или он остается непроверенным, когда вы нажимаете на него?
Комментарии:
1. Да, я печатаю поле в debug, и оно всегда равно False. Флажки устанавливаются / снимаются, как и ожидалось. Я определенно использую правильное имя свойства. Итак, требуется установить только поле .DataPropertyName?
2. Да, это для столбца DataGridViewCheckBoxColumn. Если вы установите для object значение True в коде, отражает ли это DataGridView? Также попробуйте DataGridView. EndEdit() для фиксации пользовательских изменений.
3. А .. Нашел мою ошибку. Имел неполный метод расширения с тем же именем в другой библиотеке. Таким образом, он не использовал метод, который я менял.
Ответ №2:
Обнаружена моя ошибка. Имел неполный метод расширения с тем же именем в другой библиотеке. Таким образом, он не использовал метод, который я менял.