У меня есть DataGridView, связанный с DataTable. Клетки в таблице установлены в десятичную.C# изменение ячейки DataGridView Тип (ошибка?)
В случае отсутствия релевантных данных, я хочу поменять текст «Нет данных» в столбце «Мощность» (# 2), а не на значение.
Для этого я следующее:
foreach (DataGridViewRow row in resultsDataGrid.Rows)
if ((int)row.Cells["DataYN"].Value == 1)
{
row.Cells["Power"].ValueType = typeof(String);
row.Cells["Power"].Value = "No Data";
}
При компиляции, я получаю сообщение об ошибке «„Нет данных“не является допустимым значением для Decimal ....».
Тип значения ячейки явно установлен и показан как строка, однако компилятор считает, что он все равно десятичный. Я пробовал все виды кастинга и преобразования, но безрезультатно.
- Это ошибка компилятора?
- Есть ли обходной путь?
samtal
при компиляции? ты уверен? или при запуске? компилятор не должен действительно знать тип типа типа. – ericosg
как насчет использования SetValue()? он должен помещать его в тип объекта без каких-либо проблем. – ericosg
Правильно, это при отладке, которая работает. Сожалею. Я пробовал SetValue, но получаю еще одну дополнительную проблему: в SetValue нужно вставить полную строку (объектов), но я хочу изменить одну ячейку в одном столбце (# 2). Я попробовал nulls, листинг для Object и т. Д., Но получаю ошибки (http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridviewrow.setvalues.aspx) Что бы я ни делал, система по-прежнему настаивает на том, что ячейки сохраняют свой оригинальный тип и не будут принимать строку или объект. Я по-прежнему считаю, что это ошибка, и все еще ищет обходной путь. – samtal