2014-12-25 2 views
0

Ссылаясь на этот вопрос: StackOverflowException was unhandled in VB.NET Я решил создать новый вопрос, потому что у меня новая ошибка.InvalidCastException не был обработан в VB.NET

Невозможно привести объект типа 'System.Windows.Forms.BindingSource' к типу 'System.Data.DataTable'.

CODE (в случае щелчка кнопки):

' Copy rows from the first datagridview to the second datagridview that is data bound 
    ' First copy the second datagridviews datasource into a new data table 

    Dim dt As DataTable = CType(frmEncodeDatabase.EncodingDataGridView.DataSource, DataTable).Copy 
    Dim dr As DataRow 

    ' Loop through all rows of the first datagridview and copy them into the data table 

    For r As Int32 = 0 To Me.DataGridViewX1.Rows.Count - 1 
     If Me.DataGridViewX1.Rows(r).IsNewRow = False Then ' Do not copy the new row 
      dr = dt.NewRow 

      ' Loop through all cells of the first datagridview and populate the data row 

      For c As Int32 = 0 To Me.DataGridViewX1.ColumnCount - 1 
       dr(c) = Me.DataGridViewX1.Rows(r).Cells(c).Value 
      Next 

      dt.Rows.Add(dr) ' Add the data row to the data table 
     End If 
    Next 

    Me.DataGridView2.DataSource = dt ' Rebind the second datagridview with the new table which has all the rows from both datagridviews 
    frmEncodeDatabase.show() 

ошибка, которая находится в образе, в dt As DataTable = CType(frmEncodeDatabase.EncodingDataGridView.DataSource, DataTable).Copy где ошибка прямо сейчас. Как я могу изменить код?

ответ

1

Сообщение об ошибке самоподписывается.

"Unabled бросить объект типа 'BindingSource' ввести 'DataTable'."

datassource вашего DataGridView является BindingSource, так что вам нужно бросить в этот тип.

Dim bs As BindingSource = CType(frmEncodeDatabase.EncodingDataGridView.DataSource, BindingSource) 

Если предположить, что источник данных из BindingSource является DataTable:

Dim dt As DataTable = CType(bs.DataSource, DataTable) 

Если нет, то вы получите еще одно исключение броска, но теперь вы, как это исправить.

+0

У меня есть другое исключение литья в ** dt В качестве DataTable = CType (bs.DataSource, DataTable) ** В нем говорится: «INVALIDCASTEXCEPTION: невозможно сбрасывать объект типа« Golden_Dragon_Billing_System.EncodingCompleteDataSet »для ввода« System.Data.DataTable » 'Ошибка изображения: http://postimg.org/image/a9c5tsb93/ – CodingSource

+0

Вам нужно посмотреть мой исходный проект? Я БОЛЬШОЙ и УСТРАНЕН от этого !! – CodingSource

+0

@CodingSource Нет Мне не нужно видеть ваш источник проект, но * вы * должны прочитать мой ответ * снова *. Я ** предположил **, что источник данных вашего источника привязки был datatable, это не так. Так что это может задуматься? Если вы читаете * new * внимательно прочитайте сообщение об ошибке, вы увидите, что это 'DataSet'. Поэтому вам нужно отдать его в« EncodingCompleteDataSet ». И, пожалуйста, простите меня, но мой хрустальный шар сломался, предсказывая номера лото в течение следующих недель. –

Смежные вопросы