У меня уже есть хорошая программа, которая показывает мою базу данных в Datagridview,
с ней все в порядке, теперь я хотел бы добавить параметр фильтра в свой Datagridview, например фильтр Excel
i используется: AdvanceDatagridview это расширенный Datagridview с большим количеством опций фильтра,
проблема здесь, я не могу использовать этот datagridview, если я не свяжу его с Datatable, и я также, когда я это сделал t обнаружил большую проблему, потому что в моем старом коде есть Datagridviewrow
, и теперь я попытался преобразовать Datagridviewrow в datarow, чтобы импортировать его в datatable и использовать его, но это не сработало
my Старый код:
sSQL = "SELECT " &
"ItemID, " &
"PSC_tdItems.OrderID, " &
"ArtikelID, " &
"Menge, " &
"Art, "
"CodeID, " &
MyCommand = New SqlCommand(sSQL, conFF)
drW2P = MyCommand.ExecuteReader
If drW2P.HasRows Then
While drW2P.Read()
nField_ItemID = 0
nField_OrderID = 0
nField_Quantity = 0.0
sField_Art = ""
sField_pscArticleID = ""
sField_CodeID = ""
If Not DBNull.Value.Equals(drW2P("ItemID")) Then
nField_ItemID = Convert.ToInt32(drW2P("ItemID"))
End If
If Not DBNull.Value.Equals(drW2P("OrderID")) Then
nField_OrderID = Convert.ToInt32(drW2P("OrderID"))
End If
If Not DBNull.Value.Equals(drW2P("Menge")) Then
nField_Quantity = Convert.ToDouble(drW2P("Menge").ToString.Replace(".", ""))
End If
If Not DBNull.Value.Equals(drW2P("Art")) Then
sField_Art = drW2P("Art").ToString
End If
If Not DBNull.Value.Equals(drW2P("ArticelNumber")) Then
sField_mspArticleNumber = drW2P("ArticelNumber").ToString
End If
If Not DBNull.Value.Equals(drW2P("CodeID")) Then
sField_CodeID = drW2P("CodeID").ToString
End If
Try
MyRow = New DataGridViewRow
MyRow.CreateCells(dgvW2P)
MyRow.SetValues("0",
imgNotOK.ToBitmap,
nField_ItemID,
nField_OrderID,
nField_Quantity
sField_Art,
sField_pscArticleID
sField_CodeID)
dgvW2P.Rows.Add(MyRow)
Catch ex As Exception
ErrorLogging(True, "Sub FillW2PGrid: Add a line in the grid" & vbCrLf & ex.Message & vbCrLf & "SQL:" & sSQL & vbCrLf & ex.StackTrace.ToString, nErrorLevel_Error)
Finally
If Not MyRow Is Nothing Then
MyRow.Dispose()
MyRow = Nothing
End If
End Try
End While
End If
мой новый код:
sSQL = "SELECT " &
"ItemID, " &
"PSC_tdItems.OrderID, " &
"ArtikelID, " &
"Menge, " &
"Art, "
"CodeID, " &
' here are my new modification
Dim Dt As New DataTable
Dt.Clear()
Dim cmd As New SqlCommand
If conFF.State = ConnectionState.Open Then
conFF.Close()
End If
conFF.Open()
cmd.Connection = conMspFF
cmd.CommandType = CommandType.Text
cmd.CommandText = (sSQL)
Dim da As New SqlDataAdapter(cmd)
da.Fill(Dt)
bindingSource_data.DataSource = Dt
dgvW2PNEW.DataSource = bindingSource_data
dgvW2PNEW.Refresh()
drW2PNEW = MyCommand.ExecuteReader
'проблема здесь: я не могу использовать HasRow с моим новым Datagridview
If drW2PNEW.HasRows Then
While drW2PNEW.Read()
nField_ItemID = 0
nField_OrderID = 0
nField_Quantity = 0.0
sField_Art = ""
sField_pscArticleID = ""
sField_CodeID = ""
If Not DBNull.Value.Equals(drW2PNEW("ItemID")) Then
nField_ItemID = Convert.ToInt32(drW2PNEW("ItemID"))
End If
If Not DBNull.Value.Equals(drW2PNEW("OrderID")) Then
nField_OrderID = Convert.ToInt32(drW2PNEW("OrderID"))
End If
If Not DBNull.Value.Equals(drW2PNEW("Menge")) Then
nField_Quantity = Convert.ToDouble(drW2PNEW("Menge").ToString.Replace(".", ""))
End If
If Not DBNull.Value.Equals(drW2PNEW("Art")) Then
sField_Art = drW2PNEW("Art").ToString
End If
If Not DBNull.Value.Equals(drW2PNEW("ArticelNumber")) Then
sField_mspArticleNumber = drW2PNEW("ArticelNumber").ToString
End If
If Not DBNull.Value.Equals(drW2PNEW("CodeID")) Then
sField_CodeID = drW2PNEW("CodeID").ToString
End If
Try
MyRow = New DataGridViewRow
MyRow.CreateCells(dgvW2PNEW)
MyRow.SetValues("0",
imgNotOK.ToBitmap,
nField_ItemID,
nField_OrderID,
nField_Quantity
sField_Art,
sField_pscArticleID
sField_CodeID)
' here i get the error
dgvW2PNEW.Rows.Add(MyRow)
Catch ex As Exception
ErrorLogging(True, "Sub FillW2PGrid: Add a line in the grid" & vbCrLf & ex.Message & vbCrLf & "SQL:" & sSQL & vbCrLf & ex.StackTrace.ToString, nErrorLevel_Error)
Finally
If Not MyRow Is Nothing Then
MyRow.Dispose()
MyRow = Nothing
End If
End Try
End While
End If
Заранее благодарю