我有一个datagridview,它包含一个导入的excel文件。我还有一个MySQL数据库,它包含我想要在我的datagridview中替换的值以及将替换先前值的值。
这是我的数据库:
我想要完成的是在datagridview单元格中循环并在Content字段中找到值,并将其替换为Convert字段中的相应值。例如,所有1将被替换为11,所有名称1将被标准名称1替换,所有18将被18岁替换。
我使用以下代码:
MysqlQuery = "SELECT * FROM contents"
MysqlComm = New MySqlCommand(MysqlQuery, MysqlConn)
MysqlReader = MysqlComm.ExecuteReader
While MysqlReader.Read
Dim content = MysqlReader.GetString("Content")
Dim convert = MysqlReader.GetString("Convert")
For Each row As DataGridViewRow In dgvFile.Rows
For Each cell As DataGridViewCell In row.Cells
If cell.Value IsNot Nothing Then
If cell.Value.ToString = content.ToString Then
cell.Value = convert.ToString
End If
End If
Next
Next
End While
MessageBox.Show("File successfully converted")
此代码转换为1 = 11且名称1 =标准名称1但未转换为18 = 18岁且显示此错误。
问题 为什么我会收到此错误以及如何解决此问题?答案和建议非常感谢。谢谢。 :)
更新 对于那些无法看到错误消息的人,请点击此处。
The following exception occurred in the DataGridView:
System.Exception: 18 Years Old is not a valid value for Double, --->
System.FormatException: Input string was not in a correct format.
at System.Number.PraseDouble(String value, NumberStyles options,
NumberFormatInfo numfmt)
at System.Double.Parse(String s, NumberStyles style, IFormatPRovider provider)
at System.ComponentModel.DoubleConverter.FromString(String value, NumberFormatInfo formatInfo)
at System.ComponentModel.BaseNumberConverter.ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, Object value)
--- End of inner exception stack trace ---
at System.ComponentModel.BaseNumberConverter.ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, Object value)
at System.ComponentModel.TypeConverter.ConvertFrom(Object value)
at System.Windows.Forms.DataGridView.DataGridViewDataConnection.PushValue(Int32 boundColumnIndex, Int32 columnIndex, Int32 rowIndex, Object value)
To replace this default dialog please handle the DataError event
答案 0 :(得分:0)
似乎是导致错误的行:
cell.Value = convert.ToString
可能是因为列类型是<> String
(可能是整数或双数)。
您可以将值设置为正确的类型,而不是在设置值时执行ToString
。
另一种选择是制作网格String
的所有列类型。但是,您必须考虑到必须更改列的类型(您需要找到排序事件并在排序时将值转换为正确的类型)。