2016-12-06 2 views
0

Ich habe eine DataGridView mit BookNumber, Title, AuthorNum, Price und quantityInStock. Ich möchte Zeilen nach Buchnummer suchen, wenn der Benutzer eine Taste drückt. Das habe ich, aber es funktioniert nicht.Wie suche ich eine DataGridView nach ID mit einer Schaltfläche?

Wie kann ich nur die Zeilen mit der Buchnummer anzeigen, die der Benutzer eingibt? Gerade jetzt, wenn ich Enter drücke, erscheinen keine Zeilen. Jede Hilfe wäre willkommen.

Antwort

0

Sie benötigen ein 'DataView' IMHO, um dies auf die einfachste Weise zu tun. Auch DataGridViews arbeiten mit DataTable besser als wohlgeformte POCO-Sets, so dass ich im Allgemeinen einen für den Designer eingerichtet habe. In diesem Fall habe ich ein Dataset, das ich 'ds' nannte, auf meine Designoberfläche gezogen und dort abgelegt, anstatt ein 'tProducts' in der 'Tables' Sammlung zu erstellen. Das Codebeispiel würde wie folgt sein:

Public Class DynamicFilterOnTwoTextItems 

    Public Class ProductSku 
    Public Property ProductId As Integer 
    Public Property SkuID As Integer 
    Public Property Description As String 
    End Class 

    Private _products As List(Of ProductSku) = New List(Of ProductSku) 
    Private _initialLoadDone As Boolean = False 

    Private Sub DynamicComboBoxDoubleFill_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
    dgv.AutoGenerateColumns = False 

    Dim products = New List(Of ProductSku)({ 
            New ProductSku With {.ProductId = 1, .SkuID = 1, .Description = "Offline"}, 
            New ProductSku With {.ProductId = 1, .SkuID = 2, .Description = "Offline2"}, 
            New ProductSku With {.ProductId = 2, .SkuID = 1, .Description = "Online"}, 
            New ProductSku With {.ProductId = 2, .SkuID = 2, .Description = "Online2"} 
            }) 

    Dim s = "" 
    For Each o In _products 
     Dim row As DataRow = ds.Tables("tProducts").NewRow 
     row("ProductId") = o.ProductId 
     row("SkuID") = o.SkuID 
     row("Desc") = o.Description 
     ds.Tables("tProducts").Rows.Add(row) 
    Next 

    dgv.AutoGenerateColumns = False 
    dgv.DataSource = ds.Tables("tProducts") 

    _initialLoadDone = True 
    End Sub 

    Private Sub bFilter_Click(sender As Object, e As EventArgs) Handles bFilter.Click 

    Dim predicate = String.Empty 

    If String.IsNullOrEmpty(tsku.Text) Then 
     predicate = $"ProductID = '{CInt(tPrd.Text)}'" 
    Else 
     predicate = $"ProductID = '{CInt(tPrd.Text)}' and SkuID = '{CInt(tsku.Text)}'" 
    End If 
    Dim dvProducts = New DataView(ds.Tables("tProducts"), predicate, "ProductID ASC", DataViewRowState.CurrentRows) 

    dgv.DataSource = dvProducts 
    End Sub 
End Class 
0
Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles 

SearchTextBox.TextChanged 

MainListView.Clear() 
    DT = ExecuteQuery("SELECT * FROM Prac4 WHERE LastName LIKE '%" & SearchTextBox.Text & "%' OR FirstName Like '%" & SearchTextBox.Text & "%'") 
    With MainListView 
     .View = View.Details 
     .GridLines = True 
     .FullRowSelect = True 
    End With 
    MainListView.Columns.Add("EmpID", 100, HorizontalAlignment.Left) 
    MainListView.Columns.Add("FirstName", 100, HorizontalAlignment.Left) 
    MainListView.Columns.Add("LastName", 100, HorizontalAlignment.Left) 
    MainListView.Columns.Add("MiddleName", 100, HorizontalAlignment.Left) 
    MainListView.Columns.Add("DateHire", 100, HorizontalAlignment.Left) 
    MainListView.Columns.Add("EmpType", 100, HorizontalAlignment.Left) 
    MainListView.Columns.Add("Rate", 100, HorizontalAlignment.Left) 
    For i As Integer = 0 To DT.Rows.Count - 1 
     Dim xItem As New ListViewItem(DT.Rows(i)("EmpID").ToString) 
     xItem.SubItems.Add(DT.Rows(i)("FirstName").ToString) 
     xItem.SubItems.Add(DT.Rows(i)("LastName").ToString) 
     xItem.SubItems.Add(DT.Rows(i)("MiddleName").ToString) 
     xItem.SubItems.Add(DT.Rows(i)("DateHire").ToString) 
     xItem.SubItems.Add(DT.Rows(i)("EmpType").ToString) 
     xItem.SubItems.Add(DT.Rows(i)("Rate").ToString) 
     MainListView.Items.Add(xItem) 
    Next 
End Sub 

Versuchen Sie einfach Dinge darin zu ändern.

Verwandte Themen