2013-03-01 41 views
0

我有一个datatable,显示在DataGridView来自DataTable的SELECT值

我希望用户在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 

我被困在上面的一点是我想使用Last Stop所以e.Value值来查找一个名字在我的DataTable -

ToolTipSN.Tables(“DT_ToolTip”)

+0

看看[此链接(HTTP://social.msdn .microsoft.com /论坛/ en-CA/csharpgeneral/thread/46d650fd-6d11-46a6-91cb-fa3707eab7b1) – Belial09 2013-03-01 09:50:18

+0

这是不是只是从DataGridView返回值?我有这个价值,我需要的是如何查询另一个DataTable的价值 – user1295053 2013-03-01 09:52:32

+1

这是否有帮助? [LINK](http://stackoverflow.com/questions/3362260/how-to-make-c-sharp-datatable-filter) – Belial09 2013-03-01 09:55:19

回答

0

如果你想严格比较,区分大小写的,确切的词:

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 

如果你想允许任何选定的细胞,不区分大小写(没有加入低效率)的:

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

如果你想允许任何选定的单元格,不区分大小写和单词的一部分需要匹配:

Dim filteredRows = From row In datatable2 
    Where selectedCells.Any(Function(c) CStr(c.Value). 
     IndexOf(row.Field(Of String)("col2"), StringComparison.OrdinalIgnoreCase) > -1) 
+0

我已经添加了一些额外的信息,因为我不确定我是否提出了正确的问题 – user1295053 2013-03-01 10:20:43