2008-09-06 3 views
17

У меня есть DataSet в VisualStudio 2005. Мне нужно изменить тип данных столбца в одном из данных из System.Int32 на System.Decimal , Когда я пытаюсь изменить тип данных в DataSet Designer я получаю следующее сообщение об ошибке:«Невозможно изменить тип DataType столбца после его получения» ошибка в Visual Studio 2005 DataSet Designer

Property value is not valid. Cannot change DataType of a column once it has data.

В моем понимании, это должно быть изменение типа данных в схеме для DataSet. Я не вижу, как могут быть какие-либо данные, чтобы вызвать эту ошибку.

Есть ли у кого-нибудь идеи?

ответ

32

Я получаю ту же ошибку, но только для столбцов со своим DefaultValue, установленным для любого значения (кроме значения по умолчанию <DBNull>). Так как я получил вокруг этого вопроса была:

  1. Колонка DefaultValue: Введите <DBNull>
  2. Сохранить и открыть набор данных
2

Поскольку заполненные DataTables не развлекают изменения в схеме обходной путь может применяться следующим образом:

  1. сделать метод Clone новый DataTable

  2. Используйте DataTable, чтобы создать DataTable с то же структура и внести изменения в это столбец

  3. В конце использовать импорт данных Datatable ImportRow метод для заполнения данных.

НТН

3

Я нашел работу вокруг. Если я удалю столбец данных и добавлю его обратно с другим типом данных, он будет работать.

+0

я столкнулся с той же проблемой. Странно - не может изменить его в дизайнере. Похож на ошибку ... – aSkywalker 2009-11-21 15:01:59

+0

Такая же ошибка все еще находится в VS2010. Такое же решение работает. Удалите значения по умолчанию, сохраните и закройте DS, затем снова откройте и вы можете редактировать типы данных. – Andy 2011-12-21 11:37:04

1

Для тех, кто найти это с помощью Google и у вас есть немного другой случай, когда у вашей таблицы есть данные, и вы добавляете новый столбец (например, я), если вы создаете столбец и устанавливаете тип данных в отдельных операторах, вы также получаете это же исключение. Однако, если вы делаете это в одном и том же заявлении, он работает нормально.

Таким образом, вместо этого:

var column = myTable.Columns.Add("Column1"); 
column.DataType = typeof(int); //nope, exception! 

ли это:

var column = myTable.Columns.Add("Column1", typeof(int)); 

 Смежные вопросы

  • Нет связанных вопросов^_^