Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C WPF-数据表中的实时搜索_C#_Wpf_Datatable_Rowfilter - Fatal编程技术网

C# C WPF-数据表中的实时搜索

C# C WPF-数据表中的实时搜索,c#,wpf,datatable,rowfilter,C#,Wpf,Datatable,Rowfilter,我有一个WPF Browserapplication,它获取存储在SQL Server上的数据,将其存储在DataTable中,并将其显示在DataGrid中。现在我想要一个文本框,您可以在其中搜索DataTable中的条目,但是当我加载应用程序时,我收到一个错误,告诉我无法找到行[Company] 我认为问题在于,当过滤器应用于DataTable时,DataTable尚未填充。有人能给我一个提示如何使这个工作 DataTable dt = new DataTable(); public Pa

我有一个WPF Browserapplication,它获取存储在SQL Server上的数据,将其存储在DataTable中,并将其显示在DataGrid中。现在我想要一个文本框,您可以在其中搜索DataTable中的条目,但是当我加载应用程序时,我收到一个错误,告诉我无法找到行[Company]

我认为问题在于,当过滤器应用于DataTable时,DataTable尚未填充。有人能给我一个提示如何使这个工作

DataTable dt = new DataTable();

public Page1()
{
    InitializeComponent();
    showSQLData();
}

private void showSQLData() 
{
    string sqlConnectionString = @"blabla";
    string sqlCommandString = "SELECT * FROM Excel_import";

    using (SqlConnection sqlConnection = new SqlConnection(sqlConnectionString))
    {
        SqlCommand cmd = new SqlCommand(sqlCommandString, sqlConnection);
        SqlDataAdapter adapter = new SqlDataAdapter(cmd);

        adapter.Fill(dt);

        dataGridSQLData.ItemsSource = dt.DefaultView;
    }
}

private void textBoxSearch_TextChanged(object sender, TextChangedEventArgs e)
{
    dt.DefaultView.RowFilter = string.Format("Company LIKE '%{0}%'", textBoxSearch.Text);
}

根据您最近的评论,我猜textBoxSearch_TextChanged是从InitializeComponent调用中启动的。您可以检查textBoxSearch\u TextChanged中的dt.Rows.Count>0,如果不满足该条件,则返回。

看起来应该可以工作。显而易见的问题是,你们的数据库中是否有明确的公司列?您是否尝试过在select中显式命名您的列,而不是使用*?是的,公司列在那里。如果通过按钮及其单击事件应用过滤器,则一切正常,但在使用TextBox的TextChanged事件时则不正常。我在服务器资源管理器中进行了一个测试查询:从Excel\u导入中选择公司,该查询正在运行,因此我假设它在代码中也在运行。因此,当页面加载时,您会得到一个异常?或者每次您在文本框中键入文本时?在尝试设置行筛选器之前,您是否尝试检查textBoxSearch.Text不为null或空?textBoxSearch.Text不为null,并且在加载页面时直接发生异常。