过滤绑定的数据网格,使其仅显示具有特定值的项目(Winforms)

问题描述 投票:0回答:1

因此,在我的 winforms 项目中,我有一个绑定到“Wrestler”类的数据网格。该类具有许多不同的属性,例如“姓名”、“性别”、“头衔”(该人是否拥有冠军头衔)等。该类从包含所有属性的 JSON 文本文件中获取数据。各种“摔跤手”及其不同的属性。数据网格设置为唯一可见的列是“名称”列。我还在表单上有一堆标签,每当用户在数据网格中单击它们时,这些标签就会更新以显示每个“摔跤手”对象的相应值。

这一切都工作正常,但是我想做的是有一个“过滤冠军”按钮,当用户单击它时,只有“摔跤手”对象在其相应的“标题”中没有值“无”属性(那些确实拥有冠军头衔的人)将显示在 DataGrid 中。

我认为自己是 C# 的初学者,所以我希望这是有道理的。任何帮助将非常感激。预先感谢!

由于我是 C# 新手,我不知道以这种方式过滤数据网格时从哪里开始。然而,为了让你了解我到目前为止所拥有的……

在 Form_Load 事件中我有:

 var json = File.ReadAllText(_filePath);
 Wrestlers = JsonConvert.DeserializeObject<BindingList<Wrestler>>(json);

var wrestlers = this.Wrestlers;
dataGridView1.DataSource = wrestlers;

在数据网格_Cell Click事件中我有:

Wrestler selectedWrestler = (Wrestler)dataGridView1.SelectedCells[0].OwningRow.DataBoundItem;
lblName.Text = selectedWrestler.FullName;
lblTitle.Text = selectedWrestler.Title;
c# winforms class data-binding datagrid
1个回答
0
投票

制作一个按钮,并在其 onClick 事件中,更新 datagrid 的源,然后刷新它。你可以这样做:

var newResult = wrestlers.Where(x=>x.Title != "None").ToList();
dataGridView1.DataSource = wrestlers;
dataGridView1.Refresh();

我不确定刷新方法。我在 WPF 中表现更好。

© www.soinside.com 2019 - 2024. All rights reserved.