将搜索结果显示到DataGrid中

本文关键字:DataGrid 显示 搜索结果 | 更新日期: 2023-09-27 17:58:34

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

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

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

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

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

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

这是我目前正在使用的代码块,用于在WPF中将搜索结果从TextBox显示到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();
        }
    }

将搜索结果显示到DataGrid中

空引用异常表示您正在尝试使用一个已用"新"构造实例化的对象。目前尚不清楚是哪一系列事件导致了这种情况。查看获得异常的那一行,您会发现抛出异常的方法所在的类没有实例化。仔细查看您的代码,确保在使用它之前用"new"实例化它。

我认为您的SQL查询有问题,并且您没有正确填充数据集,然后您尝试访问Table属性,如果查询没有按预期工作,该属性可能为null。

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

我已经弄清楚了这里的问题是问题,然后是解决方案::

问题出现在DS中。Tables["Product"]使用数据集中的索引而不是名称来访问该表。

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

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

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