2016-12-06 8 views
0

私は、BookNumber,Title,AuthorNum,PriceおよびquantityInStockを有するDataGridViewを持っています。ユーザーがボタンを押したときに書籍番号で行を検索したいこれは私が持っているものですが、動作していません。ボタンを使用してIDでDataGridViewを検索するにはどうすればよいですか?

ユーザーが入力した書籍番号の行のみを表示するにはどうすればよいですか?今すぐEnterキーを押すと、行が表示されません。どんな助けもありがとう。

Dim str As String 
    str = InputBox("Enter an Book Number:", "Book Selection", "") 
    TblBooksTableAdapter.Fill(BooksDataSet.tblBooks) 

    Dim nums = (From n In BooksDataSet.tblBooks 
     Where n.BookNumber = str 
     Select n.BookNumber, n.Title, n.AuthorNum, n.Price, n.QuantityInStock).ToList 

    DataGridView1.DataSource = BooksDataSet 

答えて

0

これを行うには、最も簡単な方法として、「DataView」IMHOが必要です。また、DataGridViewsはDataTableとうまく組み合わされたPOCOセットよりも優れているので、私は一般にデザイナーに設定します。この場合、「テーブル」コレクションに「tProducts」を作成するよりも、デザイン・サーフェスに「ds」というデータセットをドラッグ・アンド・ドロップしました。ちょうどそれで物事を変えてみて

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 

:コード例は次のようになります。

関連する問題