Visual Studio 2005 数据集设计器中出现“一旦列有数据就无法更改其数据类型”错误

StackOverflow https://stackoverflow.com/questions/47217

我在 VisualStudio 2005 中有一个数据集。我需要更改其中一个数据表中列的数据类型 System.Int32System.Decimal. 。当我尝试更改中的数据类型时 DataSet Designer 我收到以下错误:

属性值无效。一旦具有数据,就无法更改列的数据类型。

根据我的理解,这应该更改数据集架构中的数据类型。我不明白如何有任何数据会导致此错误。

有人有什么想法吗?

有帮助吗?

解决方案

我得到同样的错误,但仅限于具有其 DefaultValue 设置为任意值(默认值除外) <DBNull>)。所以我解决这个问题的方法是:

  1. 列默认值:输入 <DBNull>
  2. 保存并重新打开数据集

其他提示

由于填充的数据表不接受架构中的更改,因此可以应用以下解决方法:

  1. 新建一个数据表

  2. 使用DataTable的克隆方法来创建具有相同结构的DataTable,并更改该列

  3. 最后,使用DataTable的Ingortrow方法将其填充数据。

华泰

我找到了解决办法。如果我删除数据列并使用不同的数据类型将其添加回来,那么它就会起作用。

对于那些通过 Google 发现这一点的人来说,您的情况略有不同,您的表已获取数据并且您添加了一个新列(像我一样),如果您创建该列并在单独的语句中设置数据类型,您也会得到相同的异常。但是,如果您在同一条语句中执行此操作,则效果很好。

所以,而不是这个:

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

做这个:

var column = myTable.Columns.Add("Column1", typeof(int));
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top