一个图形用户界面元素,用于显示数据的表格视图。
Access中有一个数据库,我在搜索时获取数据,我想对结果进行排序,在按ASC排序时它可以工作,但在DESC上没有任何反应,这是MainWindow.xaml中的DataGrid代码: 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未实现此接口。 如何:对 DataGrid 控件中的数据进行分组、排序和筛选 如果您的 [dataTable] 变量填充了正确的数据(按 DESC 顺序),我认为您需要再次绑定数据。像这样的东西: dataGrid.Columns.Clear(); dataGrid.DataSource = dataTable; 但顺便说一句,您不需要再次引用数据库来排序数据。 您可以使用 Sort() 方法来执行此操作(dataGridView1.Sort(Column, Direction))。 欲了解更多信息,请参阅此链接: learn_microsoft_com
我使用 Josh Smith 的 MVVM 模型创建了一个树视图,但我想创建一个相邻的数据网格,该数据网格会更改以表示树视图中选择的组件。 但是,我不知道如何
我有一个可编辑的数据网格,其中有月份的列和根据搜索条件更改的几行。可以在这些单元格中输入数字,这些数字的总数是广告...
Datagrid - 使用 Reactjs 将 Material UI 中的总计数 100003 格式化为 1M+?
我正在使用reactjs在Mui中实现Datagrid。我有1M数据。 所以我目前显示的总数为 100000。 有什么方法可以将总数显示为 1M+ 或 1000+ 或任何其他速记方法来显示...
我正在开发 Blazor 项目,使用 Mudblazor Datagrid 编辑一些数据。表格的布局不容易阅读。是否可以设计表单的样式?我想增加宽度...
Dev Extreme 数据网格在 Angular 中不起作用
dev 极端的角度 我正在将 dev Extreme 与我的 Angular 应用程序集成。 这是我遵循的链接并通过文档完成所有设置。 https://js.devexpress.com/Documentation/Guide/
Private Sub DataGridView1_CellMouseClick(sender As Object, e As DataGridViewCellMouseEventArgs) 处理 DataGridView1.CellMouseClick Dim a As String = DataGridView1.Item(0, DataGridView1.Curre...
Wpf 数据网格在将项目添加到 DataSource 时不会在运行时反映
多年来我一直在使用 Stackoverflow 来解决不同的技术问题,我通常最终会找到答案。我无法解决这个问题,已经一个多星期了
基于 ComboBox 选择,使用 DataGrid CellTemplate 中的 DataTrigger 将另一个 ComboBox 更改为 TextBox
我有一个 DataGrid,我在其中使用 CellTemplate 来定义各种数据列。 像下面一样 <
从 WPF 中的 DataGridCellInfo 中获取项目
我在 WPF 中有一个 DataGrid。 DataGridCellInfo 包含 Column、IsValid 和 Item。 我试过: var foo = foobar.Item.Name var foo2 = foobar.Item[名称] 我应该如何从现场获得价值...
Canvas 围绕 yaxis 缩放 =-1 WPF,带有缩放、平移和拖动选择
我正在实现 wpf 画布,它围绕 yaxis = -1 缩放,对画布中添加的线条进行缩放、平移和拖动选择,但目前我正面临平移画布和选择
我的数据网格中有这样的过滤器: 过滤器: 列: 启用: 类型:布尔值 数据名称:u.enabled 选项: ...
WinUI 3 DataGrid - 如何共享 DataGrid.Columns 定义
在 WinUI 3 中,我想在具有相同列定义的页面上创建两个 DataGrid。基本上以下两个具有不同的 ItemsSource 值但引用相同类型的数据。 (还有
React Material UI Datagrid rowMouseEnter 不触发
当我将鼠标悬停在 Datagrid 中的任何行上时,我希望“分析”按钮从概述的变体更改为包含的变体。当该行悬停时,我无法触发任何事件,也不会...
如何在编辑单元格时立即更新 WPF DataGrid 中的绑定值?
我正在 MVVM 应用程序中使用 WPF DataGrid。我已将 DataGrid 绑定到我的 ViewModel 中的 ObservableCollection。当前,当用户编辑 DataGrid 中的单元格时,绑定值 ...
IsReadOnlyProperty.OverrideMetadata 中断 WPF DataGrid 子类中的鼠标双击命令
我有一个 DataGrid 的子类,它提供了一些额外的功能并修改了它的一些属性的默认值。特别是一件事是我希望网格是只读的......
为什么 DataGridComboBoxColumn 的默认值没有出现在 C# WPF 中的 DataGrid 中?
项目主题: 我有一个 MS Access 2003 adp VBA 项目可以连接到 SQL Server 数据库,现在我正在将该项目转换为 C# WPF,我将把数据直接保存到 SQL Server da ...
我目前正在查看来自 Nuget Microsoft.Toolkit.Uwp.UI.Controls.DataGrid xmlns:controls="using:Microsoft.Toolkit.Uwp.UI.Controls" 的 UWP DataGrid,我想更改单个列
WPF MVVM Datagid with ComboBox column set ComboBox Background with alternate color
我编辑了 ComboBox Style 以将 ComboBox ToggleButton 的背景绑定到 ComboBox Background 属性(这显然是唯一的方法)。 ... <p>我已经编辑了 <pre><code>ComboBox</code></pre> <pre><code>Style</code></pre> 以将 <pre><code>ComboBox</code></pre> <pre><code>ToggleButton's Background</code></pre> 绑定到 <pre><code>ComboBox Background</code></pre> 属性(显然是唯一的方法)。</p> <pre><code>... <Style x:Key="ComboBoxToggleButton" TargetType="{x:Type ToggleButton}"> ... <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type ToggleButton}"> <Border x:Name="templateRoot" BorderBrush="{StaticResource ComboBox.Static.Border}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" SnapsToDevicePixels="true"> <= BINDING HERE <Border x:Name="splitBorder" BorderBrush="Transparent" BorderThickness="1" HorizontalAlignment="Right" Margin="0" SnapsToDevicePixels="true" Width="{DynamicResource {x:Static SystemParameters.VerticalScrollBarWidthKey}}"> <Path x:Name="arrow" Data="F1 M 0,0 L 2.667,2.66665 L 5.3334,0 L 5.3334,-1.78168 L 2.6667,0.88501 L0,-1.78168 L0,0 Z" Fill="{StaticResource ComboBox.Static.Glyph}" HorizontalAlignment="Center" Margin="0" VerticalAlignment="Center"/> </Border> </Border> <ControlTemplate.Triggers> ... </code></pre> <p>所以这个<pre><code>XAML</code></pre>代码现在可以工作了:</p> <pre><code><ComboBox Background="Yellow" /> </code></pre> <p>现在我有 <pre><code>Datagrid</code></pre> 和 <pre><code>ComboBox</code></pre> 列,我想将替代行颜色绑定到 <pre><code>ComboBox Background</code></pre> 属性:</p> <pre><code><DataGrid AutoGenerateColumns="False" Name="datagrid1" Height="auto" ItemsSource="{Binding SourceList}" SelectedItem="{Binding SelectedSource}" BorderThickness="1" AlternatingRowBackground="#FFFFFFCC" HorizontalGridLinesBrush="#FFA0A0A0" VerticalGridLinesBrush="#FFA0A0A0" SelectionUnit="FullRow" HeadersVisibility="Column" GridLinesVisibility="Horizontal" CanUserResizeRows="False" VerticalContentAlignment="Center" BorderBrush="DarkGray" HorizontalAlignment="Stretch"> <DataGrid.Columns> <DataGridTextColumn Header="NameText" Binding="{Binding NameText}" Width="*"/> <DataGridTemplateColumn Width = "*" Header = "Names"> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <ComboBox VerticalContentAlignment = "Center" ItemsSource = "{Binding DataContext.NamesList, RelativeSource ={RelativeSource Findancestor, AncestorType = { x:Type Window}}}" SelectedItem="{Binding Name, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" DisplayMemberPath="Name"> <ComboBox.Style> <Style TargetType="ComboBox" BasedOn="{StaticResource {x:Type ComboBox}}"> <Setter Property="Background" Value="Yellow"/> <Style.Triggers> <DataTrigger Binding="{Binding Path=ItemsControl.AlternationIndex, ElementName=datagrid1}" Value="1"> <Setter Property="Background" Value="#FFFFFFCC"></Setter> </DataTrigger> </Style.Triggers> </Style> </ComboBox.Style> </ComboBox> </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn> </DataGrid.Columns> </DataGrid> </code></pre> <p>如何实现?</p> </question> <answer tick="false" vote="0"> <p>用途:</p> <pre><code><DataTrigger Binding="{Binding Path=ItemsControl.AlternationIndex, RelativeSource={RelativeSource AncestorType={x:Type DataGridRow}}}" Value="1"> <Setter Property="Background" Value="#FFFFFFCC"/> </DataTrigger> </code></pre> </answer> </body></html>
wpf datagridcheckboxcolumn:如何启用/禁用复选框
我有一个带有 DataGridCheckBoxColumn 的 DataGrid。网格具有与对象列表的绑定。我想要的是,如果选中了 N 个复选框,未选中的将被禁用,但我不知道该怎么做