Posted 5 March 2020, 9:50 am EST
Hello Prabhat,
I have a similar error to my initial case but this time both Grids 1 & 2 have the same number columns. Do you know what is causing this error.
Error location:
For row As Integer = 0 To C1TrueDBGrid1.Splits(0).DisplayColumns.Count - 1
dr(row) = C1TrueDBGrid1.Splits(0).DisplayColumns(row).DataColumn.CellText(i)
Next
Error message:
System.IndexOutOfRangeException: ‘Cannot find column 0.’
Code:
If RadioButton4.Checked Then
'Set the all rows to visible initially
For i As Integer = 0 To C1TrueDBGrid1.Splits(0).Rows.Count - 1
’ C1TrueDBGrid1.Splits(0).Rows(i).Visible = True
Next
C1TrueDBGrid3.Rows.Clear()
Dim b As Boolean() = New Boolean(C1MultiSelect1.SelectedItems.Count - 1) {}
C1TrueDBGrid4.Rows.Clear()
Dim c As Boolean() = New Boolean(C1MultiSelect1.SelectedItems.Count - 1) {}
'If any column is selected by C1MultiSelect
If C1MultiSelect1.SelectedItems.Count > 0 Then
'Iterate for all rows of main TDB
For i As Integer = 0 To C1TrueDBGrid1.Splits(0).Rows.Count - 1
'Iterate for each column selected by C1MultiSelect
For k As Integer = 0 To C1MultiSelect1.SelectedItems.Count - 1
b(k) = False
If C1TrueDBGrid1.Columns(C1MultiSelect1.SelectedItems(k).Value.ToString).CellText(i) = C1TrueDBGrid2.Columns(C1MultiSelect1.SelectedItems(k).Value.ToString).CellText(i).ToString Then
b(k) = True
End If
Next
'And Filter
If RadioButton2.Checked Then
'And Filter
Dim temp = False
For l As Integer = 0 To b.Count - 1
If b(l) = False Then
temp = True
Exit For
End If
Next
If Not temp Then
' C1TrueDBGrid1.Splits(0).Rows(i).Visible = False
Dim dr As DataRow = Me.C1TrueDBGrid3.NewRow
For row As Integer = 0 To C1TrueDBGrid1.Splits(0).DisplayColumns.Count - 1
dr(row) = C1TrueDBGrid1.Splits(0).DisplayColumns(row).DataColumn.CellText(i)
Next
C1TrueDBGrid3.Rows.Add(dr)
End If
If Not temp Then
' C1TrueDBGrid1.Splits(0).Rows(i).Visible = False
Dim dr As DataRow = Me.C1TrueDBGrid4.NewRow
For row As Integer = 0 To C1TrueDBGrid1.Splits(0).DisplayColumns.Count - 1
dr(row) = C1TrueDBGrid1.Splits(0).DisplayColumns(row).DataColumn.CellText(i)
Next
C1TrueDBGrid4.Rows.Add(dr)
End If
End If
'Or Filter
If RadioButton1.Checked Then
Dim temp = True
For l As Integer = 0 To b.Count - 1
If b(l) = True Then
temp = False
Exit For
End If
Next
' MsgBox("mmmmmmmm")
If Not temp Then
' MsgBox("nnn")
Dim dr As DataRow = Me.C1TrueDBGrid3.NewRow
For row As Integer = 0 To C1TrueDBGrid1.Splits(0).DisplayColumns.Count - 1
dr(row) = C1TrueDBGrid1.Splits(0).DisplayColumns(row).DataColumn.CellText(i)
Next
C1TrueDBGrid3.Rows.Add(dr)
' C1TrueDBGrid1.Splits(0).Rows(i).Visible = False
End If
End If
Next
End If
' Display data og GRID2
'Set the all rows to visible initially
For i As Integer = 0 To C1TrueDBGrid2.Splits(0).Rows.Count - 1
' C1TrueDBgrid2.Splits(0).Rows(i).Visible = True
Next
C1TrueDBGrid4.Rows.Clear()
'If any column is selected by C1MultiSelect
If C1MultiSelect1.SelectedItems.Count > 0 Then
'Iterate for all rows of main TDB
For i As Integer = 0 To C1TrueDBGrid2.Splits(0).Rows.Count - 1
'Iterate for each column selected by C1MultiSelect
For k As Integer = 0 To C1MultiSelect1.SelectedItems.Count - 1
b(k) = False
If C1TrueDBGrid2.Columns(C1MultiSelect1.SelectedItems(k).Value.ToString).CellText(i) = C1TrueDBGrid1.Columns(C1MultiSelect1.SelectedItems(k).Value.ToString).CellText(i).ToString Then
b(k) = True
End If
Next
'And Filter
If RadioButton2.Checked Then
'And Filter
Dim temp = False
For l As Integer = 0 To b.Count - 1
If b(l) = False Then
temp = True
Exit For
End If
Next
If Not temp Then
' C1TrueDBgrid2.Splits(0).Rows(i).Visible = False
Dim dr As DataRow = Me.C1TrueDBGrid4.NewRow
For row As Integer = 0 To C1TrueDBGrid2.Splits(0).DisplayColumns.Count - 1
dr(row) = C1TrueDBGrid2.Splits(0).DisplayColumns(row).DataColumn.CellText(i)
Next
C1TrueDBGrid4.Rows.Add(dr)
End If
End If
'Or Filter
If RadioButton1.Checked Then
Dim temp = True
For l As Integer = 0 To b.Count - 1
If b(l) = True Then
temp = False
Exit For
End If
Next
' MsgBox("mmmmmmmm")
If Not temp Then
' MsgBox("nnn")
Dim dr As DataRow = Me.C1TrueDBGrid4.NewRow
For row As Integer = 0 To C1TrueDBGrid2.Splits(0).DisplayColumns.Count - 1
dr(row) = C1TrueDBGrid2.Splits(0).DisplayColumns(row).DataColumn.CellText(i)
Next
C1TrueDBGrid4.Rows.Add(dr)
' C1TrueDBgrid2.Splits(0).Rows(i).Visible = False
End If
End If
Next
End If
'******************************************************************************************
Dim dt As DataTable = New DataTable()
Dim dc As DataColumn
For i As Integer = 0 To C1TrueDBGrid2.Splits(0).DisplayColumns.Count - 1
dc = New DataColumn
dc.ColumnName = C1TrueDBGrid2.Splits(0).DisplayColumns(i).Name
dc.Caption = dc.ColumnName
dc.DataType = C1TrueDBGrid2.Splits(0).DisplayColumns(0).DataColumn.DataType
dt.Columns.Add(dc)
Next
For i As Integer = 0 To C1TrueDBGrid3.Splits(0).Rows.Count - 1
Dim dr As DataRow = dt.NewRow
For col As Integer = 0 To C1TrueDBGrid3.Splits(0).DisplayColumns.Count - 1
dr(col) = C1TrueDBGrid3.Splits(0).DisplayColumns(col).DataColumn.CellText(i)
Next
dt.Rows.Add(dr)
Next
For i As Integer = 0 To C1TrueDBGrid4.Splits(0).Rows.Count - 1
Dim demoDb As C1TrueDBGrid = New C1TrueDBGrid()
Dim dr As DataRow = dt.NewRow
Dim temp As Boolean = False
For col As Integer = 0 To C1TrueDBGrid4.Splits(0).DisplayColumns.Count - 1
dr(col) = C1TrueDBGrid4.Splits(0).DisplayColumns(col).DataColumn.CellText(i)
Next
For j As Integer = 0 To C1TrueDBGrid3.Splits(0).Rows.Count - 1
For col As Integer = 0 To C1TrueDBGrid3.Splits(0).DisplayColumns.Count - 1
If dr(col) <> C1TrueDBGrid3.Splits(0).DisplayColumns(col).DataColumn.CellText(i) Then
temp = True
Exit For
End If
Next
If temp Then
dt.Rows.Add(dr)
temp = False
Exit For
End If
Next
Next
C1TrueDBGrid5.DataSource = dt
' Dim DataView As DataView = dt.AsDataView()
' DataView.Sort = " NSN ASC,SCOUNTRY ASC,COUNTRY ASC"
'C1TrueDBGrid5.DataSource = DataView
Dim str As String = C1MultiSelect1.SelectedItems(0).Value.ToString + " ASC"
For item As Integer = 1 To C1MultiSelect1.SelectedItems.Count - 1
str = str + "," + C1MultiSelect1.SelectedItems(item).Value.ToString + " ASC"
Next
Dim DataView As DataView = dt.AsDataView()
DataView.Sort = str
C1TrueDBGrid5.DataSource = DataView
End If
End Sub
Thanks,
Victor