0

datatable表示されているがありDataGridViewます。

ユーザーにで値を選択してもらい、datagridviewその値をフィルターとして使用して、で別の値を検索しますdatatable

だから次のようなもの:

SELECT col2 from DataTable2 where col1= 
(value in selected cell of the DataGridView)

編集

OK、正しい質問をしているのかわからないので、いくつかの情報を追加しました。

私はdatagridview以下のようなツールチップを持っています:

Sub dataGridView1_CellFormatting(ByVal sender As Object, _
    ByVal e As DataGridViewCellFormattingEventArgs) _
    Handles DataGridView1.CellFormatting

    If e.ColumnIndex = Me.DataGridView1.Columns("Last Stop").Index _
        AndAlso (e.Value IsNot Nothing) Then

        With Me.DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex)

            .ToolTipText = '(THIS IS WHERE I'M STUCK)

        End With

    End If

End Sub

私が上で立ち往生しているビットは、DataTableで名前を検索するLast Stopために値を使用したい場所です-e.Value

ToolTipSN.Tables( "DT_ToolTip")

4

1 に答える 1

0

If you want strict comparison, case-sensitive and exact word:

Dim selectedCells = DataGridView1.SelectedCells.Cast(Of DataGridViewCell)()
If selectedCells.Any Then
    Dim filteredRows = From row In datatable2
       Join cell In selectedCells On row.Field(Of String)("col2") Equals cell.Value
       Select row
    ' either use For Each to enumerate the result:
    For Each row In filteredRows
        Dim col2 = row.Field(Of String)("col2")
        ' ...
    Next
    ' or use filteredRows.CopyToDataTable to create  a new DataTable from the result
End If

If you want to allow any of the selected cells and case-insensitively(less efficient without join):

Dim filteredRows = From row In datatable2
    Where selectedCells.Any(Function(c) StringComparer.OrdinalIgnoreCase.Equals(c.Value, row("col2")))

If you want to allow any of the selected cells, case-insensitively and part of the word needs to match:

Dim filteredRows = From row In datatable2
    Where selectedCells.Any(Function(c) CStr(c.Value).
        IndexOf(row.Field(Of String)("col2"), StringComparison.OrdinalIgnoreCase) > -1)
于 2013-03-01T10:02:40.523 に答える