Solved

system.argumentexception:DataGridViewcombobox cell value is not valid

Posted on 2009-04-05
17
3,685 Views
Last Modified: 2012-05-06
i am trying to assign the value of a particular cell from the respective column in the database ...here is the code i tried.....

 For Each row As DataGridViewRow In Me.DataGridView1.Rows
           
            Dim CTRcell As DataGridViewComboBoxCell = DirectCast(row.Cells(0), DataGridViewComboBoxCell)
            CTRcell.Value = centeridandname
           
        Next

i am getting an exception system.argumentexception:DataGridViewcombobox cell value is not valid.

Please find the exception details attached.
Untitled.jpg
0
Comment
Question by:yuvaratna
  • 9
  • 8
17 Comments
 
LVL 48

Expert Comment

by:jpaulino
Comment Utility
Do you have the combobox in the 1st column ?
Try to change to :

For Each row As DataGridViewRow In Me.DataGridView1.Rows

        If not row.IsNewRow Then

            Dim CTRcell As DataGridViewComboBoxCell = DirectCast(row.Cells(0), DataGridViewComboBoxCell)

            CTRcell.Value = centeridandname

        End If

  Next

Open in new window

0
 
LVL 48

Expert Comment

by:jpaulino
Comment Utility
Sorry wrong answer :(
The problem is not the new row, for that message, but the assing of the value. If you want to select one value you can do this way:

        For Each row As DataGridViewRow In Me.DataGridView1.Rows

            If Not row.IsNewRow Then

                row.Cells(0).Value = "1"

            End If

        Next
 

        ' Where "1" is the name of the item to select 

Open in new window

0
 

Author Comment

by:yuvaratna
Comment Utility
Hi Ipaulino,I was waiting for you, Thanks for your reply, i tried the above code...but  "row.IsNewRow" is returning true....if i commented the if not row is new row line, it is returning the same exception "system.argumentexception:DataGridViewcombobox cell value is not valid."
0
 
LVL 48

Expert Comment

by:jpaulino
Comment Utility
Check my second comment :)
I have understood wrongly your problem.
0
 

Author Comment

by:yuvaratna
Comment Utility
heer is the code i have

For Each row As DataGridViewRow In Me.DataGridView1.Rows
           
             
                row.Cells(0).Value =centeridandname
         
        Next

in this case it is returning the same exception....


0
 

Author Comment

by:yuvaratna
Comment Utility
when i tried


 For Each row As DataGridViewRow In Me.DataGridView1.Rows
            If Not row.IsNewRow Then
             
                row.Cells(0).Value = ObjTA.centeridandname
            End If
        Next


The execution is not going to the row.cell(0).value line because, the "row.isnewrow" is returning true...
0
 
LVL 48

Expert Comment

by:jpaulino
Comment Utility
What is centeridandname variable ? You must specify a valid STRING that are in the itens of the combobox
You could try
row.Cells(0).Value =centeridandname.ToString()
0
 
LVL 48

Expert Comment

by:jpaulino
Comment Utility
Ok, it's a new row then remove that line.
0
How to improve team productivity

Quip adds documents, spreadsheets, and tasklists to your Slack experience
- Elevate ideas to Quip docs
- Share Quip docs in Slack
- Get notified of changes to your docs
- Available on iOS/Android/Desktop/Web
- Online/Offline

 

Author Comment

by:yuvaratna
Comment Utility
nope! that is not working out!.. it is returning the same error
0
 
LVL 48

Expert Comment

by:jpaulino
Comment Utility
Can you show a picture of what you have ?
centeridandname is a string variable and exists in the datagridviewcombobox ?
0
 

Author Comment

by:yuvaratna
Comment Utility
the canterid and name is returning "0000-abc" , which exists in the combobox dataset...
0
 
LVL 48

Accepted Solution

by:
jpaulino earned 500 total points
Comment Utility
Humm ok, you have a datasource for the combobox!
You can still use the code I have showed you but you need to cancel the error.  On the DataError event you can clear the error this way:
(this was documented as a datagridview problem in VS2005 ... didn't knew that still exists in VS2008)

    Private Sub DataGridView1_DataError(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewDataErrorEventArgs) Handles DataGridView1.DataError

        If e.Context = DataGridViewDataErrorContexts.Formatting Or e.Context = DataGridViewDataErrorContexts.PreferredSize Then

            e.ThrowException = False

        End If

    End Sub

Open in new window

0
 

Author Comment

by:yuvaratna
Comment Utility
k ipaulo, thanks a lot, Give a min, i l chek on this....
0
 

Author Comment

by:yuvaratna
Comment Utility
i have this right now

For Each row As DataGridViewRow In Me.DataGridView1.Rows
         
            row.Cells(0).Value = ObjTA.centeridandname.ToString()
           
        Next

 Private Sub DataGridView1_DataError(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewDataErrorEventArgs) Handles DataGridView1.DataError
        If e.Context = DataGridViewDataErrorContexts.Formatting Or e.Context = DataGridViewDataErrorContexts.PreferredSize Then
            e.ThrowException = False
        End If
    End Sub



the error message is handled....But it is looping in the datagridview1_error event ...and still not displaying the value in the selected combobox...
0
 
LVL 48

Expert Comment

by:jpaulino
Comment Utility
Once again please CHECK if the values is available in the datasource and if the COLUMN is the index 0 (1st column)
Here's an working example if you want to try:

Public Class Form1
 

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
 

        ' Creates a datatable

        Dim dt As New DataTable

        dt.Columns.Add("id", GetType(Integer)).AutoIncrement = True

        dt.Columns.Add("item", GetType(String))
 

        ' Adds some values

        For x As Int16 = 0 To 10

            Dim dr As DataRow = dt.NewRow

            dr("item") = "Item " & x.ToString

            dt.Rows.Add(dr)

        Next
 

        ' Create a new combo and adds it to the grid

        Dim combo As New DataGridViewComboBoxColumn

        combo.DataSource = dt.DefaultView

        combo.DisplayMember = "item"

        combo.ValueMember = "id"
 

        Me.DataGridView1.Columns.Add(combo)
 

    End Sub
 

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        For Each row As DataGridViewRow In Me.DataGridView1.Rows

            row.Cells(0).Value = "Item 3"

        Next

    End Sub
 

    Private Sub DataGridView1_DataError(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewDataErrorEventArgs) Handles DataGridView1.DataError

        If e.Context = DataGridViewDataErrorContexts.Formatting Or e.Context = DataGridViewDataErrorContexts.PreferredSize Then

            e.ThrowException = False

        End If

    End Sub
 

End Class

Open in new window

0
 

Author Closing Comment

by:yuvaratna
Comment Utility
Thanks a lot ipaulino...I really hard tough time with this datagridview, Which very few of them are familiar with, U Helped me in many instances.....
0
 
LVL 48

Expert Comment

by:jpaulino
Comment Utility
Glad I could help!
jpaulino
0

Featured Post

How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

Join & Write a Comment

Suggested Solutions

Title # Comments Views Activity
Total in textboxes 9 34
How Can I fix my MouseHover Event? 14 26
Hide Tab Page 3 18
Format column on datatable 7 14
This article explains how to create and use a custom WaterMark textbox class.  The custom WaterMark textbox class allows you to set the WaterMark Background Color and WaterMark text at design time.   IMAGE OF WATERMARKS STEPS Create VB …
A while ago, I was working on a Windows Forms application and I needed a special label control with reflection (glass) effect to show some titles in a stylish way. I've always enjoyed working with graphics, but it's never too clever to re-invent …
Excel styles will make formatting consistent and let you apply and change formatting faster. In this tutorial, you'll learn how to use Excel's built-in styles, how to modify styles, and how to create your own. You'll also learn how to use your custo…
This video demonstrates how to create an example email signature rule for a department in a company using CodeTwo Exchange Rules. The signature will be inserted beneath users' latest emails in conversations and will be displayed in users' Sent Items…

762 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

9 Experts available now in Live!

Get 1:1 Help Now