Access中有一个数据库,我在搜索时获取数据,我想对结果进行排序,在按ASC排序时它可以工作,但在DESC上没有任何反应,这是MainWindow.xaml中的DataGrid代码:
<DataGrid Name="dataGrid" CanUserSortColumns="True" HorizontalAlignment="Center" Height="742" Margin="0,142,0,0" VerticalAlignment="Top" Width="1440" Sorting="dataGrid_Sorting"/>
这是与 DataGrid 交互的,使用 Button_Click 方法,在数据库中搜索数据:
readonly string content = File.ReadAllText(@"C:\Users\User\source\repos\CG\BaseLink.txt");
private void Button_Click(object sender, RoutedEventArgs e)
{
string searchValue = searchBox.Text; // значение поиска, введенное в поле searchBox
OleDbConnection connection = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + content + "nwind.mdb");
connection.Open();
// создаем объект OleDbCommand и выполняем параметризованный запрос
OleDbCommand command = new OleDbCommand("SELECT * FROM Customers WHERE CustomerID LIKE ? OR CompanyName LIKE ? " +
"OR ContactName LIKE ? OR ContactTitle LIKE ? OR Address LIKE ? OR City LIKE ? OR Region LIKE ?" +
"OR PostalCode LIKE ? OR Country LIKE ? OR Phone LIKE ? OR Fax LIKE ?;", connection);
command.Parameters.AddWithValue("@searchValue1", "%" + searchValue + "%");
command.Parameters.AddWithValue("@searchValue2", "%" + searchValue + "%");
command.Parameters.AddWithValue("@searchValue3", "%" + searchValue + "%");
command.Parameters.AddWithValue("@searchValue4", "%" + searchValue + "%");
command.Parameters.AddWithValue("@searchValue5", "%" + searchValue + "%");
command.Parameters.AddWithValue("@searchValue6", "%" + searchValue + "%");
command.Parameters.AddWithValue("@searchValue7", "%" + searchValue + "%");
command.Parameters.AddWithValue("@searchValue8", "%" + searchValue + "%");
command.Parameters.AddWithValue("@searchValue9", "%" + searchValue + "%");
command.Parameters.AddWithValue("@searchValue10", "%" + searchValue + "%");
command.Parameters.AddWithValue("@searchValue11", "%" + searchValue + "%");
OleDbDataAdapter dataAdapter = new OleDbDataAdapter(command);
DataSet dataSet = new DataSet();
dataAdapter.Fill(dataSet, "Customers");
dataGrid.ItemsSource = dataSet.Tables["Customers"].DefaultView;
connection.Close();
}
这是对数据进行排序的 dataGrid_Sorting 方法:
private void dataGrid_Sorting(object sender, DataGridSortingEventArgs e)
{
DataGridColumn column = e.Column;
// Определение направления сортировки
ListSortDirection direction;
if (column.SortDirection == null)
{
// Сортировка не была применена ранее - устанавливаем направление сортировки по умолчанию
direction = ListSortDirection.Ascending;
}
else if (column.SortDirection == ListSortDirection.Ascending)
{
// Сортировка применена в направлении по возрастанию - меняем направление на убывание
direction = ListSortDirection.Descending;
}
else
{
// Сортировка применена в направлении по убыванию - меняем направление на возрастание
direction = ListSortDirection.Ascending;
}
// Установка направления сортировки
column.SortDirection = direction;
// Создание команды для выполнения запроса к базе данных Access
string sortOrder = (direction == ListSortDirection.Ascending) ? "ASC" : "DESC";
OleDbCommand command = new OleDbCommand("SELECT * FROM Customers ORDER BY [" + column.SortMemberPath + "] " + sortOrder);
// Выполнение запроса к базе данных Access и получение данных в виде DataTable
DataTable dataTable = new DataTable();
using (OleDbConnection connection = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + content + "nwind.mdb"))
{
connection.Open();
command.Connection = connection;
using (OleDbDataAdapter adapter = new OleDbDataAdapter(command))
{
adapter.Fill(dataTable);
}
}
// Обновление источника данных ItemsSource для DataGrid
dataGrid.ItemsSource = dataTable.DefaultView;
// Обновление данных в DataGrid
dataGrid.Items.Refresh();
}
与AI合作,这是第一个项目,请勿重击,谢谢帮助!
我正在尝试在 DataGrid 中实现排序,并寻求帮助来实现此功能
要对 DataGrid 中的数据进行分组、排序和筛选,请将 DataGrid 绑定到支持这些操作的 ICollectionView 实现。
ICollectionView实现接口INotifyCollectionChanged,DataView未实现此接口。
如果您的 [dataTable] 变量填充了正确的数据(按 DESC 顺序),我认为您需要再次绑定数据。像这样的东西:
dataGrid.Columns.Clear();
dataGrid.DataSource = dataTable;
但顺便说一句,您不需要再次引用数据库来排序数据。 您可以使用 Sort() 方法来执行此操作(dataGridView1.Sort(Column, Direction))。 欲了解更多信息,请参阅此链接: learn_microsoft_com