C# - datagridview不显示查询结果

时间:2018-01-13 17:26:44

标签: c# linq datagridview

我需要帮助解决令我困惑的代码:我是一名C#初学者,而且我在某些方面需要帮助。在项目中,我有一个简单的表单和SQL Server中链接表的数据源。在这种形式中,我有一个网格和三个文本框:网格和2个文本框绑定到相同的数据源;另一个文本框是输入搜索

我的目标是让用户在文本框中键入搜索,并通过LINQ在bindingsource中进行过滤。请遵循以下代码:

private void Search()
{
    if (string.IsNullOrEmpty(toolStripTextBox1.Text))
    {
        var query = from v in coletasDataSet.UF
            select v;
        this.ufBindingSource.DataSource = query.ToList();
    }
    else
    {
        string pesquisa = toolStripTextBox1.Text.ToLower().Trim();
        var query = from v in coletasDataSet.UF
            where v.UF.ToLower().Contains(pesquisa) 
            select v;
        this.ufBindingSource.DataSource = query.ToList();  
    }
}

问题在于,当我搜索网格时,它不会显示任何数据。它包含2列(UF和ID_UF)和一个空行。我已经调试并检查了查询结果,它是正确的。

有什么可能是问题的建议吗?细节:我无法将query.ToList()传递给网格,因为它的文本框中包含绑定显示一组数据而网格显示另一组数据。

1 个答案:

答案 0 :(得分:1)

使用BindingList

  

绑定列表提供了支持数据绑定的通用集合。

尝试以下

     var lstResult = from v in coletasDataSet.UF
                 where v.UF.ToLower().Contains(pesquisa) 
                 select new UF()
                 {
                    Id = u.pk,
                    Username = u.Username
                    ..........                    
               }).ToList();

     var resultSet = new BindingList<UF>(lstResult); // <-- BindingList

     //Bind BindingList directly to the DataGrid, no need of BindingSource
     myGrid.DataSource = resultSet;