如何使用WPF搜索数据库并在DataGrid中显示结果
本文关键字:DataGrid 显示 结果 何使用 WPF 搜索 数据库 | 更新日期: 2023-09-27 18:10:47
我正试图从我的数据库中搜索购买,从'PurchaseTable'表并在DataGrid中显示结果,我知道如何使用Windows窗体:
private void SearchButton_Click(object sender, EventArgs e)
{
DataTable dt = new DataTable();
SqlDataAdapter SDA = new SqlDataAdapter("SELECT TitleOfRecord, DateOfPurchase FROM PurchaseTable WHERE (NameOfCustomer = '"+NameOfCustomerSText.Text+"')", connection);
//Query that will return the Title of the Records and Dates of purchases depending on the Customer which has been searched for
SDA.Fill(dt);
PurchaseResults.DataSource = dt;
//Results will appear in the PurchaseResults DataGrid
}
但是我不知道如何使用WPF,到目前为止我有这个,但它不工作:
private void SearchCustomerButton_Click(object sender, RoutedEventArgs e)
{
DataTable dt = new DataTable();
SqlDataAdapter SDA = new SqlDataAdapter("SELECT TitleOfRecord, DateOfPurchase FROM PurchaseTable WHERE (NameOfCustomer = '" + NameOfCustomerSText.Text + "')", connection);
//Query that will return the Title of the Records and Dates of purchases depending on the Customer which has been searched for
SDA.Fill(dt);
PurchaseResults.DataContext = dt;
//Results will appear in the PurchaseResults DataGrid
}
我有这些命名空间:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Data.SqlClient;
using System.Data;
我用下面的代码来解决我的问题:
private void SearchCustomerButton_Click(object sender, RoutedEventArgs e)
{
SqlDataAdapter da;
DataSet ds;
da = new SqlDataAdapter("SELECT TitleOfRecord, DateOfPurchase FROM PurchaseTable WHERE (NameOfCustomer = '" + NameOfCustomerSText.Text + "')", connection);
//Query that will return the Title of the Records and Dates of purchases depending on the Customer which has been searched for
ds = new DataSet();
da.Fill(ds);
PurchaseResults.ItemsSource = ds.Tables[0].DefaultView;
//Results will appear in the PurchaseResults DataGrid
}
当你使用后面的代码时,你应该提供DataGrid的ItemSouce
,但是当处理绑定与MVVM架构时,则使用DataContext
。
替换
PurchaseResults.DataContext = dt;
PurchaseResults.ItemsSource = dt;
变化
PurchaseResults.DataContext = dt;
PurchaseResults.ItemsSource = dt;
您是否定义了数据网格中的列?如果没有,当您将autogenerateccolumns属性设置为true时,WPF可以自动为您生成它。
PurchaseResults.AutoGenerateColumns = true;
PurchaseResults.ItemsSource = dt;
你可以试试
PurchaseResults.ItemsSource = dt.AsDataView();