一个图形用户界面元素,用于显示数据的表格视图。
我正在尝试实现一个 DataGrid,其中一列有一个复杂的对象,而组合框(网格外)有一个该列的同一时间对象的列表。使用 WPF 和 MVVM。 当我...
我有一个数据网格,其中删除图标作为一列,更新图标作为另一列。单击更新后,第一个单元格将获得焦点。 单击删除时,我想删除所选行,但是...
WPF - 将 Listview 绑定为 rowdetailstemplate 的子元素
我需要了解如何在 RowDetailsTemplate 内绑定列表视图。 这是我的 XAML: 我需要了解如何在 RowDetailsTemplate 中绑定 listview。 这是我的 XAML: <Window x:Class="TestWPF.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:TestWPF" mc:Ignorable="d" Title="MainWindow" Height="450" Width="800"> <Grid> <DataGrid Name="TestDataGrid" AutoGenerateColumns="False"> <DataGrid.Columns> <DataGridTextColumn Header="Code" Binding="{Binding Code}" /> <DataGridTextColumn Header="Description" Binding="{Binding Description}"/> </DataGrid.Columns> <DataGrid.RowDetailsTemplate> <DataTemplate> <Border Background="Transparent" BorderBrush="White" BorderThickness="1" CornerRadius="15" Margin="10"> <Grid Margin="5"> <Grid.ColumnDefinitions> <ColumnDefinition/> <ColumnDefinition/> </Grid.ColumnDefinitions> <StackPanel Grid.Column="0"> <StackPanel Orientation="Horizontal"> <TextBlock Text="CurrentStyle: "/> <TextBlock Text="{Binding Cstyle}"/> </StackPanel> </StackPanel> <StackPanel Grid.Column="1" VerticalAlignment="Stretch"> <TextBlock Text="Available Styles"/> <ListView x:Name="styleList" Height="135" > <GridView> <GridViewColumn DisplayMemberBinding="{Binding sCode}" Header="Name"/> <GridViewColumn DisplayMemberBinding="{Binding sColor}" Header="Color"/> </GridView> </ListView> </StackPanel> </Grid> </Border> </DataTemplate> </DataGrid.RowDetailsTemplate> </DataGrid> </Grid> </Window> 这是我的隐藏代码: using System.Collections.Generic; using System.Windows; namespace TestWPF { /// <summary> /// Logica di interazione per MainWindow.xaml /// </summary> public partial class MainWindow : Window { public List<GridElement> GridList { get; set; } public MainWindow() { InitializeComponent(); GridList = new List<GridElement> { new GridElement { Code = "ABC", Description = "Description for ABC", Cstyle = "Current style ABC", AvailableStyles = new List<Styles> { new Styles() { sCode = "Styletest1-ABC", sColor = "blue" }, new Styles() { sCode = "Styletest2-ABC", sColor = "red" } } }, new GridElement { Code = "DEF", Description = "Description for DEF", Cstyle = "Current style DEF", AvailableStyles = new List<Styles> { new Styles() { sCode = "Styletest1-DEF", sColor = "white" }, new Styles() { sCode = "Styletest2-ABC", sColor = "black" } } } }; TestDataGrid.ItemsSource = this.GridList; } } public class GridElement { public string Description { get; set; } public string Code { get; set; } public string Cstyle { get; set; } public List<Styles> AvailableStyles { get; set; } } public class Styles { public string sCode { get; set; } public string sColor { get; set; } } } 但结果就是图中的样子。 这就是结果 我需要的是rowdetail中的listview根据我选择的主网格的行而变化。 因此,如果我单击第一行,我将看到列表视图中列出的 ABC 样式(即颜色,但显示什么并不重要),如果单击第二行,也会看到相同的样式。 谢谢您的帮助 解决方案 我报告我找到的问题解决方案,仅供参考: <ListView x:Name="styleList" Height="135" ItemsSource="{Binding AvailableStyles}" > <ListView.View> <GridView> <GridViewColumn DisplayMemberBinding="{Binding sCode}" Header="Name"/> <GridViewColumn DisplayMemberBinding="{Binding sColor}" Header="Color"/> </GridView> </ListView.View> </ListView> 您的代码几近完美。但是,发生这种情况是因为未设置 ListView 的 ItemsSource 属性,并且缺少 ListView.View 元素。以下是处理和解决此问题的方法。 绑定 ItemsSource 属性 ItemsSource 属性对于使用数据填充 ListView 至关重要。在您的情况下,您希望 ListView 显示每个 GridElement 的可用样式。通过将 ListView 的 ItemsSource 绑定到AvailableStyles 属性,您可以确保每行显示正确的数据。 通过设置 ItemsSource="{BindingAvailableStyles}",您可以告诉 ListView 使用当前 GridElement 中的AvailableStyles 集合作为其数据源。如果没有这个,ListView就没有数据可显示。 定义ListView.View ListView.View 属性对于定义要在 ListView 中显示的数据的布局和列是必需的。在本例中,GridView 用于定义 sCode 和 sColor 的列。 ListView.View 元素(特别是 GridView)定义 ListView 中每个项目的显示方式。它指定每个项目应显示两列:一列用于 sCode,一列用于 sColor。如果没有这个,ListView 将不知道如何渲染数据。 最终结果 最终的 WPF 将如下所示: <ListView x:Name="styleList" Height="135" ItemsSource="{Binding AvailableStyles}"> <ListView.View> <GridView> <GridViewColumn DisplayMemberBinding="{Binding sCode}" Header="Name"/> <GridViewColumn DisplayMemberBinding="{Binding sColor}" Header="Color"/> </GridView> </ListView.View> </ListView> 还有这样的应用程序: 我希望这有帮助!如果您还有任何疑问,请随时询问。
WPF:加载 Accessibility.dll 后 DataGrid 性能下降
当我处理 WPF DataGrid 中的大型数据集和大量列时,滚动通常是可以接受的。但是一旦 Accessibility.dll 被加载,性能就会下降,并且变得非常缓慢......
我在 WPF 中有一个带有自动生成列的 DataGrid。 如何禁用遵循 MVVM 模式的所有行的排序功能? 我在 WPF 中有一个带有 自动生成 列的 DataGrid。 如何禁用遵循 MVVM 模式的所有行的排序功能? <DataGrid AutoGenerateColumns="True" ItemsSource="{Binding MyList}"> </DataGrid> 在 dataGrid 上设置 CanUserSortColumns="False",这将禁用所有列的排序。 <DataGrid AutoGenerateColumns="True" ItemsSource="{Binding MyList}" CanUserSortColumns="False"> </DataGrid>
我正在尝试为 Material UI Datagrid 表添加通用标题,但无法弄清楚。我假设有一种方法可以使用 slot={{toolbar}} 功能,但找不到什么......
我对包含复选框的 DataGridTemplateColumn 有这种非常奇怪的行为。 该模板包含一个复选框,当前未出于测试目的绑定到任何内容。 这是一个演示...
我有两个类 - 对象和参数。 公共类对象 { 公共 int ID { 获取;放; } 公共字符串名称{获取;放; } ...... 公共列表 Paramlist { get; ...
collectionview 刷新时的 DataGrid 虚拟化
具体来说,这是 DataGrid 过滤器性能问题的后续问题,但 StackOverflow 上还有许多与 WPF DataGrid 性能相关的类似问题。 经过大量的专业学习后...
更改 MUI DataGrid 的 GridColDef 界面中的“字段”键类型
GridColDef 的字段键默认类型是字符串。我想为其分配一组特定字符串。有办法让它发挥作用吗? 我尝试使用 Array & {
Powershell - DataViewGrid - 列自动调整大小
对于 .NET 和 powershell,我完全是个新手,想知道你们是否可以提供帮助。我正在从表单上的 .CSV 生成数据网格,并希望网格自动调整列大小
Rails datagrid gem 的输入类型=“文本”的多个属性的 HTML 错误
在流行的 Rails gem 数据网格中,指定范围过滤器(对于整数)会生成如下 HTML: 在流行的 Rails gem datagrid 中,指定范围过滤器(对于整数)会生成如下 HTML: <form class="datagrid-form artists_grid" id="new_artists_grid" action="/en/artists" accept-charset="UTF-8" method="get"> <div class="datagrid-filter filter"> <label for="artists_grid_birth_year">Year</label> <input class="birth_year integer_filter from" multiple="multiple" value="" type="text" name="artists_grid[birth_year][]"> <span class="separator integer"> - </span> <input class="birth_year integer_filter to" multiple="multiple" value="" type="text" name="artists_grid[birth_year][]"> </div> W3C 验证器抱怨 HTML,告诉 此时元素输入不允许使用多个属性。 事实上,W3C 网站上的 HTML Living Standard 的 input 元素的 汇总表确实表明,multiple属性仅适用于 file 和 email 类型。 但是,似乎 Firefox 和 Chrome 浏览器至少按照 datagrid 的预期处理上述表单,并为 multiple-text-input 字段返回一个数组。 我的问题是 此错误(“元素输入上不允许使用属性多个,类型为“文本””)仅适用于 HTML 5 还是其他错误?在以前的 HTML 中实际上允许它吗?(只是我的猜测) 大多数主流浏览器是否将 input type="text" multiple="multiple" 字段解释为多个字段并返回数组? 如果没有,是否有任何有效的方法可以在 HTML 表单中指定具有公共标签的一对(或列表)文本字段? 有什么方法可以绕过这个问题,强制 datagrid 生成 HTML5 有效的 HTML? 上述示例的具体情况 这里详细介绍了上述 HTML 是如何生成的。 我在 datagrid 上为 Artist 模型的索引表指定了以下过滤器,该模型具有列(属性)birth_year: filter(:birth_year, :integer, range: true, header: 'Year') 输入1960年和2010年两个值 生成以下带有 GET 参数的 URI 字符串: http://localhost:3000/en/artists?artists_grid%5Bbirth_year%5D%5B%5D=1960&artists_grid%5Bbirth_year%5D%5B%5D=2010&commit=Apply 或者,如果解码, http://localhost:3000/en/artists?artists_grid[birth_year][]=1960&artists_grid[birth_year][]=2010&commit=Apply 因此,浏览器(Firefox 或 Chrome)确实将这两个字段解释为公共标签的多个输入字段。 multiple 只是 Rails 表单助手工作方式的副作用。 通常,重复的键会被最后一个键覆盖: >> Rack::Utils.parse_nested_query("a=1&a=2") => {"a"=>"2"} 但是如果输入名称以 [] 结尾,它将被解析为数组: >> Rack::Utils.parse_nested_query("a[]=1&a[]=2") => {"a"=>["1", "2"]} 获取输入名称 [] 的一个简单方法是添加 multiple: true,这就是 datagrid 正在做的事情: <%= text_field :artists_grid, :birth_year, multiple: true %> #=> <input multiple="multiple" type="text" name="artists_grid[birth_year][]" id="artists_grid_birth_year"> # ^^ 做同样的事情但没有 multiple 属性有点尴尬: <%= text_field_tag "artists_grid[birth_year][]" %> #=> <input type="text" name="artists_grid[birth_year][]" id="artists_grid_birth_year_"> <%= text_field "artists_grid[birth_year]", nil %> #=> <input type="text" name="artists_grid[birth_year][]" id="artists_grid_birth_year_"> <%= form_with url: "/", method: :get, scope: :artists_grid do |f| %> <%= f.fields_for :birth_year do |fff| %> <%= fff.text_field nil %> #=> <input type="text" name="artists_grid[birth_year][]" id="artists_grid_birth_year_"> <% end %> <% end %> 要真正修复它,必须在 Rails 中完成,位于此处: https://github.com/rails/rails/blob/v7.1.3.3/actionview/lib/action_view/helpers/tags/text_field.rb#L17 diff --git a/actionview/lib/action_view/helpers/tags/text_field.rb b/actionview/lib/action_view/helpers/tags/text_field.rb index c579e9e79f..fe9c1a8d49 100644 --- a/actionview/lib/action_view/helpers/tags/text_field.rb +++ b/actionview/lib/action_view/helpers/tags/text_field.rb @@ -14,6 +14,7 @@ def render options["type"] ||= field_type options["value"] = options.fetch("value") { value_before_type_cast } unless field_type == "file" add_default_name_and_id(options) + options.delete("multiple") tag("input", options) end <%= form_with url: "/", method: :get, scope: :artists_grid do |f| %> <%= f.text_field :birth_year, multiple: true %> #=> <input type="text" name="artists_grid[birth_year][]" id="artists_grid_birth_year"> <% end %>
MUI Data-grid-pro React 组件中点击时如何在行下显示自定义组件?
我正在尝试在 MUI DataGrid 中添加一个功能,如果您单击一行,它会展开更多信息, 这是我尝试过的演示 但我无法将其自定义为具有行的完整宽度并具有...
我有一个数据网格绑定到数据集,我想在页脚中显示填充整数的列的平均结果。 我认为,我可以想到两种方法: 1.“使用...
@mui/x-data-grid 中的 ValueGetter 函数接收未定义的参数
我正在使用 @mui/x-data-grid 版本 7.3.0,我的列定义中的 valueGetter 函数存在问题。 valueGetter 函数应该接收的 params 对象是
尽管 Filterable 设置为 true,MudDataGrid 未在 Blazor 应用程序中显示筛选选项
我正在使用 Blazor Web App .NET 8 和最新的 MudBlazor 服务。设置 Filterable = true 后,过滤器图标出现在我的表格上,但是单击时,没有显示任何内容。我正在关注...
DataGrid Mudblazor 中的实际值和显示值不同
我正在尝试实现一个通用数据网格,它将与我将发送到组件的任何数据一起使用。我正在 blazor 中编写代码,特别是使用 MudBlazor 框架。 所以我有一个问题
我有一个 DataGrid(称为 TheGrid),我想在其上实现复制和粘贴功能。复制功能很好用,但我不知道如何实现粘贴。我只需要得到...
MudBlazor DataGrid 问题 - 如何控制自动生成的保存按钮的操作
我正在尝试自学 MudBlazor,因为我厌倦了自己处理所有 CSS。它是如此美好和强大,我很喜欢它! 不过我确实遇到了一个小问题。假设您想使用
尽管 IsEnabled 设置为 true,DataGrid 中的按钮仍被禁用
目标是将启用的按钮插入到 DataGrid 的列中。 在以下 XAML 代码片段中,将 Button 插入到 DataGrid 中,并将 IsEnabled 属性设置为 true。 目标是将启用的 Button 插入到 DataGrid 的列中。 在以下 XAML 代码片段中,将 Button 插入到 DataGrid 中,并将 IsEnabled 属性设置为 true。 <DataGrid Name="DgData" HorizontalAlignment="Left" Height="306" Margin="10,119,0,0" VerticalAlignment="Top" Width="637" Background="White"> <DataGrid.RowStyle> <Style TargetType="DataGridRow"> <Setter Property="IsEnabled" Value="{Binding RelativeSource={RelativeSource Self},Path=IsNewItem,Mode=OneWay}" /> </Style> </DataGrid.RowStyle> <DataGrid.Columns> <DataGridTextColumn Binding="{x:Null}" ClipboardContentBinding="{x:Null}" Header="Id" IsReadOnly="True" Visibility="Hidden"/> <DataGridTextColumn Header="Date" Binding="{Binding Date}" IsReadOnly="True" Width="100" CanUserResize="False"/> <DataGridTextColumn Header="Domain name" Binding="{Binding DomainName}" IsReadOnly="True" Width="105" CanUserResize="False"/> <DataGridTextColumn Header="Type" Binding="{Binding Relevance}" IsReadOnly="True" Width="65" CanUserResize="False"/> <DataGridTextColumn Header="Category" Binding="{Binding DomainName}" IsReadOnly="True" Width="65" CanUserResize="False"/> <DataGridTextColumn Header="Description" Binding="{Binding Content}" IsReadOnly="True" Width="200" CanUserResize="False"/> <DataGridTemplateColumn MinWidth="100" Header="Note" CanUserSort="True" CanUserResize="False"> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <Button Name="BtnShowNotes" IsEnabled="True" Click="BtnShowNotes_OnClick">Show</Button> </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn> </DataGrid.Columns> </DataGrid> 但是,执行应用程序时,该按钮被禁用。 是什么导致了这个问题? 您的 RowStyle 将整行的 IsEnabled 属性设置为 false。删除此一项,Button 应启用: <DataGrid Name="DgData" HorizontalAlignment="Left" Height="306" Margin="10,119,0,0" VerticalAlignment="Top" Width="637" Background="White"> <DataGrid.Columns> <DataGridTextColumn Binding="{x:Null}" ClipboardContentBinding="{x:Null}" Header="Id" IsReadOnly="True" Visibility="Hidden"/> <DataGridTextColumn Header="Datum" Binding="{Binding Date}" IsReadOnly="True" Width="100" CanUserResize="False"/> <DataGridTextColumn Header="Doménové jméno" Binding="{Binding DomainName}" IsReadOnly="True" Width="105" CanUserResize="False"/> <DataGridTextColumn Header="Druh" Binding="{Binding Relevance}" IsReadOnly="True" Width="65" CanUserResize="False"/> <DataGridTextColumn Header="Kategorie" Binding="{Binding DomainName}" IsReadOnly="True" Width="65" CanUserResize="False"/> <DataGridTextColumn Header="Popis" Binding="{Binding Content}" IsReadOnly="True" Width="200" CanUserResize="False"/> <DataGridTemplateColumn MinWidth="100" Header="Poznámky" CanUserSort="True" CanUserResize="False"> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <Button Name="BtnShowNotes" IsEnabled="True" Click="BtnShowNotes_OnClick">Zobrazit</Button> </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn> </DataGrid.Columns> </DataGrid>