我在 VisualStudio 2005 中有一个数据集。我需要将其中一个数据表中列的数据类型从System.Int32
更改为System.Decimal
. 当我尝试更改数据类型时,DataSet Designer
我收到以下错误:
属性值无效。一旦有数据,就无法更改列的 DataType。
据我了解,这应该是更改 DataSet 架构中的数据类型。我看不出有什么数据会导致这个错误。
有没有人有任何想法?
我在 VisualStudio 2005 中有一个数据集。我需要将其中一个数据表中列的数据类型从System.Int32
更改为System.Decimal
. 当我尝试更改数据类型时,DataSet Designer
我收到以下错误:
属性值无效。一旦有数据,就无法更改列的 DataType。
据我了解,这应该是更改 DataSet 架构中的数据类型。我看不出有什么数据会导致这个错误。
有没有人有任何想法?
我得到相同的错误,但仅适用于其DefaultValue
设置为任何值的列(除了 default <DBNull>
)。所以我解决这个问题的方法是:
<DBNull>
由于填充的数据表不会改变架构,因此可以应用以下解决方法:
创建一个新的数据表
使用数据表的 Clone 方法创建具有相同结构的数据表并更改该列
最后使用数据表的 ImportRow 方法用数据填充它。
高温高压
我找到了解决办法。如果我删除数据列并将其添加回不同的数据类型,那么它将起作用。
对于那些通过谷歌找到这个并且你有一个稍微不同的情况,你的表有数据并且你添加了一个新列(像我一样),如果你创建列并在单独的语句中设置数据类型,你也会得到同样的异常。但是,如果您在同一个语句中执行此操作,则效果很好。
所以,而不是这个:
var column = myTable.Columns.Add("Column1");
column.DataType = typeof(int); //nope, exception!
做这个:
var column = myTable.Columns.Add("Column1", typeof(int));
Open With...
XML (Text) Editor
<xs:element name="DataColumn1"
msprop:Generator_ColumnVarNameInTable="columnDataColumn1"
msprop:Generator_ColumnPropNameInRow="DataColumn1"
msprop:Generator_ColumnPropNameInTable="DataColumn1Column"
msprop:Generator_UserColumnName="DataColumn1"
type="xs:int"
minOccurs="0" />
type="xs:int"
为type="xs:decimal"
Run Custom Tool
这是一个老问题,但它仍然可能发生在 VS 2019
解决方案:
现在应该可以毫无问题地更改类型。