我需要帮助解决令我困惑的代码:我是一名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()传递给网格,因为它的文本框中包含绑定显示一组数据而网格显示另一组数据。
答案 0 :(得分:1)
绑定列表提供了支持数据绑定的通用集合。
尝试以下
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;