将搜索结果显示到DataGrid中

时间:2014-04-15 22:24:43

标签: c# wpf

我一直试图找出这个错误:

  

Toys Live.exe中出现'System.NullReferenceException'类型的第一次机会异常   附加信息:对象引用未设置为对象的实例。

这是产生上述错误的代码字符串:

DataRow[] returnRows = DS.Tables["Product"].Select("Typeoftoy='" + searchOut + "'");

对象引用应该是下面的代码,除非我遗漏了其他内容。

public partial class MainWindow : Window
{
    private SqlDataAdapter dAdapter = new SqlDataAdapter();
    private DataSet DS = new DataSet();
    private SqlConnection conConnect;

    public MainWindow()
    {
        InitializeComponent();
    }

这是我目前正在使用的代码块,用于将TextBox中的搜索结果显示到WPF中的DataGrid中。

private void SearchBTN_Click(object sender, RoutedEventArgs e)
    {
        conConnect = new SqlConnection("Data Source=GERRY;Initial Catalog=toyDB;Integrated Security=True");

        dAdapter = new SqlDataAdapter("SELECT Typeoftoy   FROM Product", conConnect);
        DS = new DataSet();

        if (tbSearch.Text.Length >= 1)
        {
            string searchOut = tbSearch.Text;
            int result = 0;

            dAdapter.Fill(DS, "MyDataBinding");

            DataRow[] returnRows = DS.Tables["Product"].Select("Typeoftoy='" + searchOut + "'");

            result = returnRows.Length;

            if (result > 0)
            {
                datagrid1.ItemsSource = returnRows.CopyToDataTable().DefaultView;
            }
            else
            {
                MessageBox.Show("No Records Found");
            }

            conConnect.Close();
        }
    }

3 个答案:

答案 0 :(得分:0)

空引用异常意味着您正在尝试使用现在使用" new"实例化的对象。构造。目前尚不清楚导致这种情况的一系列事件。查看获得异常的行,您将发现该方法抛出异常的类未实例化。查看您的代码并确保使用" new"来实例化它。在你使用它之前。

答案 1 :(得分:0)

我认为你的SQL查询有问题并且你没有真正填充DataSet,然后你尝试访问Table属性,如果查询没有按预期工作,它可能为null。

为dAdapter.Fill方法设置断点,并确保它输出预期结果

答案 2 :(得分:0)

我已经发现问题在于问题然后是解决方案::

问题出在DS.Tables [" Product"]中,使用DataSet中的索引而不是名称来访问表。

DataRow[] returnRows = DS.Tables["Product"].Select("Typeoftoy='" + searchOut + "'");

解决方案,正在删除["产品"]并将其索引设置为0

 DataRow[] returnRows = DS.Tables[0].Select("Typeoftoy='" + searchOut + "'");