none
"System.ArgumentException.DataGridViewComboxCell值無效"是啥意思啊??? RRS feed

  • 問題

  • 各位大大,

    小弟寫了下面這段程式用來在GataGridView上更新部分儲存格的Items資料,可是在增加新列時就會出現"System.ArgumentException.DataGridViewComboxCell值無效"訊息,不曉得哪為大大可以幫忙解釋一下這是什麼意思呢?

        Private Sub dgv_1_CellEndEdit(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgv_1.CellEndEdit
            Dim cnstr As String, CN As OleDbConnection, reader As OleDbDataReader
            cnstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\STRICKLE\STRICKLE.mdb"
            CN = New OleDbConnection(cnstr)
            CN.Open()
            Dim dgv_mt_value As String = CType(sender, DataGridView).Rows(e.RowIndex).Cells("dgv_mt").Value.ToString
            Dim dgv_color_value As String = CType(sender, DataGridView).Rows(e.RowIndex).Cells("dgv_color").Value.ToString
            Dim dgv_type_value As String = CType(sender, DataGridView).Rows(e.RowIndex).Cells("dgv_type").Value.ToString
            If e.ColumnIndex = CType(sender, DataGridView).Columns("dgv_orno").Index Then
                dgv_mt.Items.Clear()
                Dim mtcmd As OleDbCommand = New OleDbCommand("SELECT 材質 From price where 類別= '" & cl & "' GROUP BY 材質", CN)
                reader = mtcmd.ExecuteReader
                Do While reader.Read
                    dgv_mt.Items.Add(reader.Item("材質"))
                Loop
                reader.Close()
            End If
            If e.ColumnIndex = CType(sender, DataGridView).Columns("dgv_mt").Index Then
                dgv_color.Items.Clear()
                Dim colorcmd As OleDbCommand = New OleDbCommand("SELECT 顏色 From price where 類別= '" & cl & "' and 材質= '" & dgv_mt_value & "' GROUP BY 顏色", CN)
                reader = colorcmd.ExecuteReader
                Do While reader.Read
                    dgv_color.Items.Add(reader.Item("顏色"))
                Loop
                reader.Close()
            End If
            If e.ColumnIndex = CType(sender, DataGridView).Columns("dgv_color").Index Then
                dgv_type.Items.Clear()
                Dim typecmd As OleDbCommand = New OleDbCommand("SELECT 形狀 From price where 類別= '" & cl & "' and 材質= '" & dgv_mt_value & "' and 顏色= '" & dgv_color_value & "' GROUP BY 形狀", CN)
                reader = typecmd.ExecuteReader
                Do While reader.Read
                    dgv_type.Items.Add(reader.Item("形狀"))
                Loop
                reader.Close()
            End If
            If e.ColumnIndex = CType(sender, DataGridView).Columns("dgv_type").Index Then
                dgv_size.Items.Clear()
                Dim sizecmd As OleDbCommand = New OleDbCommand("SELECT 尺寸 From price where 類別= '" & cl & "' and 材質= '" & dgv_mt_value & "' and 顏色= '" & dgv_color_value & "' and 形狀= '" & dgv_type_value & "' GROUP BY 尺寸", CN)
                reader = sizecmd.ExecuteReader
                Do While reader.Read
                    dgv_size.Items.Add(reader.Item("尺寸"))
                Loop
                reader.Close()
            End If
            CN.Close()
        End Sub

    2008年1月3日 上午 05:59

解答

  • HI,

     

    應該是您填入在DataGridView中的ComboBox控制項的內容不符合該欄位的型態的規定引起的錯誤, 所以您可以檢查一下填在ComboBox欄位是什麼內容? 才能知道為什麼寫不回資料庫

     

    tihs

    2008年1月3日 上午 08:26

所有回覆

  • HI,

     

    應該是您填入在DataGridView中的ComboBox控制項的內容不符合該欄位的型態的規定引起的錯誤, 所以您可以檢查一下填在ComboBox欄位是什麼內容? 才能知道為什麼寫不回資料庫

     

    tihs

    2008年1月3日 上午 08:26
  • 謝囉!!!我再檢查看看~~

    2008年1月3日 上午 08:29