为什么在替换vb中的datagridview值时会出现错误?

时间:2015-01-29 03:23:51

标签: mysql vb.net datagridview

我有一个datagridview,它包含一个导入的excel文件。我还有一个MySQL数据库,它包含我想要在我的datagridview中替换的值以及将替换先前值的值。

这是我的数据库:

Database

我想要完成的是在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岁且显示此错误。

Output

问题 为什么我会收到此错误以及如何解决此问题?答案和建议非常感谢。谢谢。 :)

更新 对于那些无法看到错误消息的人,请点击此处。

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

1 个答案:

答案 0 :(得分:0)

似乎是导致错误的行:

cell.Value = convert.ToString

可能是因为列类型是<> String(可能是整数或双数)。

您可以将值设置为正确的类型,而不是在设置值时执行ToString

另一种选择是制作网格String的所有列类型。但是,您必须考虑到必须更改列的类型(您需要找到排序事件并在排序时将值转换为正确的类型)。