0

2つのテキストボックス、データグリッドビュー、およびボタンを備えた「検索」という名前のフォームがあります。必要な名前などのキーワードを最初のテキストボックス ["txtemployee_search"] に入力すると、従業員テーブルにバインドされている datagridview [dgvemployee] 項目がフィルター処理されます。探している名前を選択すると、表示されます。 2番目のテキストボックスに["txtemp_search_selection"].しかし、私の問題は、2番目のテキストボックスの名前に関連する名前、年齢、性別、写真、電話などの詳細を含む2番目のフォームを表示または開くことです。ボタンをクリックします。vb 2008 と sql server 2005 を使用しています。ヘルプ PLS が必要です!!!

以下は私のコードです

Imports System.Data.SqlClient

Public Class employee_search
'THE CODE TO SEARCH DATAGRID WHILE TYPING INTO FIRST TEXTBOX

Private Sub txtemployee_search_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtemployee_search.TextChanged
    Dim keywords As String = txtemployee_search.Text

    Dim con As SqlConnection = New SqlConnection("Data Source=oheneba;Initial Catalog=brainiac;Persist Security Info=True;User ID=sa;Password=***********")

    ' Use wildcard  

    Dim cmd As SqlCommand = New SqlCommand("SELECT * FROM Employee WHERE Full_Name Like '%" & keywords & "%' ", con)

    ' or Where Full_Name='" & keywords & "'  

    con.Open()

    Dim myDA As SqlDataAdapter = New SqlDataAdapter(cmd)

    Dim myDataSet As DataSet = New DataSet()

    myDA.Fill(myDataSet, "Employee")

    dgvemployee.DataSource = myDataSet.Tables("Employee").DefaultView
    con.Close()

End Sub

'選択した DataGridView アイテムを 2 番目のテキスト ボックスに表示するコード

Private Sub dgvemployee_CellContentClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvemployee.CellContentClick
    Dim dgv As DataGridView = CType(sender, DataGridView)
    Dim thisCell As DataGridViewCell = dgv.SelectedCells(0)
    Dim selCell As Integer = thisCell.ColumnIndex

    txtemp_search_selection.Text = dgvemployee.CurrentRow.Cells(selCell).Value.ToString()

End Sub
4

3 に答える 3

0

アプローチは、選択する必要がある少し異なります。間違っていたら申し訳ありませんが、2 つのグリッドの例を紹介します。1 つは顧客用、もう 1 つは注文用です (関係は DB に正しくなければなりません)。したがって、2 つの BindingSource オブジェクトを使用します。1 つは顧客用、もう 1 つは注文用です。だから私たちは持っています

  • CustomersBindingSource
  • OrdersBindingSource

プロパティウィンドウで設定

CustomersBindingSource.Datasource = yourDataset
CustomersBindingSource.DataMember = Customers
OrdersBindingSource.Datasource = OrdersCustomersfkBindingSource

そして、私が提案するフィルタリング方法については、次のとおりです。

于 2013-07-03T11:49:14.077 に答える
0

別のフォームで追加の詳細が必要な場合は、詳細を含む 2 番目のフォームを作成する必要があります。datagridview で行ったのと同じように、データ バインディングを追加し、正しいレコードに移動します。datagridview から選択した完全な名前を新しいフォームに渡すことができるはずです。

    tIndex = Me.MyBindingSource.Find("Full_Name", keywords)
    If tIndex = -1 Then 'could not find
        'employee not found
    Else
        Me.MyBindingSource.Position = tIndex 'navigate to found record
    End If
于 2013-07-03T12:16:21.413 に答える