2010-08-16 3 views
0

J'ai un DataGridView lié à un DataSet. Je veux seulement une sélection de colonnes affichées sur le DataGridView plutôt que tous. J'ai alors une zone de texte dans laquelle je veux afficher une valeur (colonne Version_no) de la colonne n'apparaissant pas dans DataGridView. Est-ce possible?Sélection de résultats à partir de DataSet

Serait-il préférable d'avoir une colonne cachée sur le DataGridView et utiliser cette valeur pour la zone de texte?

Dim UpdateThreadStart As New ThreadStart(AddressOf QueryDataBase) 
Dim CallDataBindToDataGrid As New MethodInvoker(AddressOf Me.DataBindToDataGrid) 
Dim MyDataSet As New DataSet 
Dim MyDataAdapter As SqlDataAdapter 
Dim MyQueryString As String = "" 
Dim MyConnection As New SqlConnection("ConnectionString") 

Private Sub BtnSearch_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSearch.Click 
    Try 
     MyQueryString = "SELECT * FROM TABLE;" 
     UpdateThread = New Thread(UpdateThreadStart) 
     UpdateThread.IsBackground = True 
     UpdateThread.Name = "UpdateThread" 
     UpdateThread.Start() 
     While UpdateThread.IsAlive 
      Application.DoEvents() 
     End While 
    Catch ex As Exception 
      MessageBox.Show(ex.Message) 
    End Try 

End Sub 

Public Sub DataBindToDataGrid() 
    DGVSearchResults.DataSource = MyDataSet 
    DGVSearchResults.DataMember = "MyTable" 
    MyDataAdapter = Nothing 
    MyDataSet = Nothing 

End Sub 

' Sub routine used by the background thread to query database. 
Public Sub QueryDataBase() 
    MyDataSet = New DataSet() 
    MyConnection.Open() 
    Dim cmd As New SqlCommand(MyQueryString, MyConnection) 
    MyDataAdapter = New SqlDataAdapter(cmd) 
    MyDataAdapter.Fill(MyDataSet, "MyTable") 
    MyConnection.Close() 
    ' Make asynchronous function call to Form's thread. 
    Me.BeginInvoke(CallDataBindToDataGrid) 
End Sub 

Répondre

0

Plusieurs options: Vous pouvez utiliser une colonne cachée, ou rechercher la valeur dans l'ensemble de données référencé, lorsque l'utilisateur clique sur une ligne dans la DataGridView donnée en utilisant soit: DataGridView.CurrentRow.index, ou DataGridView.SelectedCells (0) .Value, ou TryCast (DatadGridView.SelectedRows (0) .DataBoundItem, DataSetTableAdapter.DataTableRowType) .ColumnName

+0

TextBox.Text = MyDataSet.Tables (0) .Rows (DGVSearchResults.CurrentRow.Index) ("Software_Version") renvoie le datagridrow courant de l'ensemble de données. Est-il possible de masquer cette colonne de DataGridView? (Ou sélectionnez \ afficher uniquement des colonnes spécifiques?) Comme elles ne sont pas obligatoires dans le DataGrid, elles sont maintenant affichées dans la zone de texte. – madlan

0

Vous pouvez définir le même DataSource à votre TextBox et votre DataGridView.

Définissez DataMember pour la zone de texte sur la colonne souhaitée.

Ensuite, lorsque vous passez d'une ligne à l'autre sur DataGridView, TextBox affiche la valeur souhaitée.

Questions connexes