Согласно http://msdn.microsoft.com/en-us/library/ms810291.aspx, вы не можете изменить атрибут ReadOnly столбца на основе выражений в DataTable. Мне нужно выяснить способ оценки выражения в столбце DataTable, затем установить .Expression = null, а затем разрешить редактирование этого столбца:
Следующий код не работает, потому что, когда вы устанавливаете Expression == null, он сбрасывает значение в DataTable на DBNull:
_persistedDataTable.Columns[currentDataColumn.ColumnName].Expression = null;
_persistedDataTable.Columns[currentDataColumn.ColumnName].ReadOnly = false;
Моя идея состоит в том, что я копирую текущий DataTable в новый DataTable, строка за строкой без сохранения схемы, что позволяет мне редактировать новые значения DataTable (независимо от того, были ли они получены с помощью выражений или нет) ... Я просто не уверен как это сделать.