2017-01-05 3 views
0

У меня проблема с моим datagridview. Как я могу объединить строку, если column2 и column3 совпадают?Vb.net Как объединить столбец

Например:

Col 1| Col2| Col3| 

    2| Mars|Regular 

    3| Mars|Regular 

Как я могу объединить его в только один столбец?

+0

Вы можете заказать свои данные и протестировать предыдущую строку с текущей и удалить ее, если она соответствует. – nbadaud

+0

вот что я сделал, хочу знать, как я могу это сделать после установки значения на datagrid, будет msgbox, который будет предупреждать пользователя. – NeCat

+0

Вы можете создать Sub, который будет зацикливать ваши строки и протестировать их. Когда он совпадает, вы добавляете MsgBox с объединенными строками или значениями, и если он не совпадает с ним, продолжайте следующую строку – nbadaud

ответ

0

Что-то подобное должно ответить на ваш вопрос:

Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load 
    ' Populate manually your datagridview 
    Dim row As Object() = New Object() {2, "Mars", "Regular"} 
    dtgv.Rows.Add(row) 
    row = New Object() {3, "Mars", "Regular"} 
    dtgv.Rows.Add(row) 
    row = New Object() {10, "Earth", "Regular"} 
    dtgv.Rows.Add(row) 

    ' Try to merge rows 
    For i = 0 To dtgv.RowCount - 1 
     merge(i) 
    Next 
End Sub 

Public Sub merge(ByVal row As Integer) 
    Dim planet As Boolean = False 
    Dim regularity As Boolean = False 

    ' If planets are identicals 
    If dtgv.Rows(row).Cells(1).Value = dtgv.Rows(row + 1).Cells(1).Value Then 
     planet = True 
    End If 

    ' Same 
    If dtgv.Rows(row).Cells(2).Value = dtgv.Rows(row + 1).Cells(2).Value Then 
     regularity = True 
    End If 

    ' Merge 
    If planet = True And regularity = True Then 
     ' Sum up index 
     dtgv.Rows(row).Cells(0).Value = dtgv.Rows(row).Cells(0).Value + dtgv.Rows(row + 1).Cells(0).Value 
     ' Remove one row 
     dtgv.Rows.RemoveAt(row + 1) 
     ' Message to warn there is a merge 
     MsgBox("Rows " & row & " and " & row + 1 & " merged !") 
    End If 
End Sub 

только две первые строки будет соответствовать, потому что третья одна у другой планеты.

+0

Знаете ли вы, что можете обращаться к ячейкам dgv через x, y? например 'dtgv (colNum, rowNum) .value' Может возвращать' Nothing'. Вы можете избежать тестирования Nothing, добавив «" или добавив 0, например. 'dtgv (colNum, rowNum) .value &" "' Сохраняет много ввода. – rheitzman