VB.NET - проблема с циклическим перемещением строк в сетке данных - PullRequest
0 голосов
/ 27 марта 2012
 For Each row As DataRow In dgrFarms.Rows
        Dim sendtroopid As Integer
        sendtroopid = row("idColumn")
        'Do Something
Next

Я уже некоторое время пытаюсь провести цикл по строке только в одном столбце в VB.NET, и я также выполнил свою домашнюю работу.Когда я использую этот код выше, я получаю:

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

Я увидел другое руководствокоторый сказал мне сделать:

For Each row As DataGridView In dgrFarms.Rows
        sendtroopid = row("idColumn")
        'Do Something
Next

Но это дает мне ошибку:

Не удалось разрешить перегрузку, потому что ни один доступный «Элемент» не принимает это количество аргументов.

(это синее подчеркивание на строке («idColumn»))

Ответы [ 3 ]

3 голосов
/ 27 марта 2012

Код должен быть:

For Each row As DataGridViewRow In dgrFarms.Rows
    sendtroopid = row.Cells("idColumn").Value
    'Do Something
Next

Обратите внимание, что каждая строка является DataGridViewRow, а не DataGridView. Кроме того, из этой строки вы получаете содержимое определенной ячейки со свойством Cells.

1 голос
/ 03 сентября 2012

Это функция, которую я использую во всех своих приложениях:

''' <summary>
''' Provides the Properties and Methods to insert each Column from eaqch Row in a Dataset
''' when given a Dataset and a List Box 
''' </summary>
''' <remarks></remarks>
Public Class clsDisplayDataset
    Private mstrClsTitle As String = "clsDisplayDataset"

    ''' <summary>
    ''' For Each Row and Each Column create a single line to be inserted into the 
    ''' List Box
    ''' </summary>
    ''' <param name="idsDataset"></param>
    ''' <param name="ilstListBox"></param>
    ''' <returns>True   -    When successful
    '''          False  -    When unsuccessful</returns>
    ''' <remarks></remarks>
    Public Function DisplayDataSet(ByVal idsDataset As DataSet,
                                   ByRef ilstListBox As ListBox) As Boolean
        Dim lstrRowValue As String = ""
        Try
            For Each ldsRow As DataRow In idsDataset.Tables(0).Rows
                lstrRowValue = ""
                For Each ldsCol As DataColumn In idsDataset.Tables(0).Columns
                    lstrRowValue = lstrRowValue & ldsRow(ldsCol.ColumnName).ToString() & vbTab
                Next
                ilstListBox.Items.Add(lstrRowValue)
            Next
            Return True
        Catch ex As Exception
            DisplayDataSet = False
            Throw New Exception(mstrClsTitle & ".DisplayDataSet" & vbCrLf &
                                "Error Number      [" & Err.Number & vbCrLf &
                                "Error Description [" & Err.Description & "]" & vbCrLf &
                                "Failed to insert columns into List Box")
        End Try
    End Function
End Class
0 голосов
/ 27 марта 2012

Вы пытались запустить свой код, проверив itemType связанной строки? попробуйте разместить код между:

If (e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem) Then
'do loop
end if
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...