Преобразование типа ячейки DataGridView во время выполнения - PullRequest
5 голосов
/ 17 мая 2011

Мое представление данных имеет столбец с флажком, который действителен только для некоторых записей в данных, которые он отображает.Для записей, для которых флажок недействителен, я не хочу ничего отображать - например, пустое текстовое поле.

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

Пока у меня есть код ниже.

 this.deviceList1.DeviceGrid[colIndex, rowIndex] = new KryptonDataGridViewTextBoxCell()
 this.deviceList1.DeviceGrid[colIndex, rowIndex].ReadOnly = true;

Как это приводит к ошибке данных DataGridView:

System.FormatException: отформатированное значение ячейки имеет неправильный тип.

Ответы [ 2 ]

6 голосов
/ 17 мая 2011

отсортировано. Просто на самом деле. Решение состоит в том, чтобы гарантировать, что свойству Value присвоено соответствующее значение. Т.е. его нужно установить в строковое значение.

this.deviceList1.DeviceGrid[colIndex, rowIndex] =  new KryptonDataGridViewTextBoxCell()
this.deviceList1.DeviceGrid[colIndex, rowIndex].ReadOnly = true;
this.deviceList1.DeviceGrid[colIndex, rowIndex].Value = "";
0 голосов
/ 17 мая 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...