gpt4 book ai didi

c# - Datagridview/BindingSource 和排序 : add record at end of list

转载 作者:太空狗 更新时间:2023-10-29 23:48:46 27 4
gpt4 key购买 nike

这将是一个愚蠢的问题,但我有一个以 BindingSource 作为数据源的 datagridview。

bindingSources.Datasource 是一个带有排序支持的 BindingList。所有这些都有效。

但是当一条记录将被插入到排序列表中时,它将被放置在datagridiview 的末尾。刷新后(例如鼠标单击),记录将放置在正确的位置。

所以,我想我忘记了一些东西来实现或调用以确保插入的记录将直接显示在数据 GridView 的正确位置。

谁能帮我个小费。

谢谢。

最佳答案

我用下面的代码来工作。

请原谅粗略的代码 - 我只是展示了关键部分,但如果您需要,我可以提供更完整的示例。

我有一个绑定(bind)到我的 DataGridView 的 SortableBindingList _names。然后在我的表单上有一个按钮,在 Click even 处理程序中添加了一个新名称。在 joepete 之间添加名称 kevin 效果很好。

private SortableBindingList<Names> _names;

public Form1()
{
InitializeComponent();

_names = new SortableBindingList<Names>();
_names.Add(new Names() { Name = "joe" });
_names.Add(new Names() { Name = "pete" });

DataGridViewTextBoxColumn col1 = new DataGridViewTextBoxColumn();
col1.DataPropertyName = "Name";

dataGridView1.Columns.Add(col1);

dataGridView1.DataSource = _names;
}

private void button1_Click(object sender, EventArgs e)
{
_names.Add(new Names(){Name = "kevin"});
dataGridView1.Sort(dataGridView1.Columns[0], ListSortDirection.Descending);
}


public class Names
{
public string Name { get; set; }
}

所以关键是我在添加到列表后对我的 dataGridView 进行排序。

我也可以在我的 .Sort() 调用中提供一个 IComparer - 默认比较器只是在 .ToString() 上进行比较

有趣的是,在我的示例中,以下内容在插入项目时也有效:

private void button1_Click(object sender, EventArgs e)
{
//_names.Add(new Names(){Name = "kevin"});
_names.Insert(1, new Names() { Name = "kevin" });
// dataGridView1.Sort(dataGridView1.Columns[0], ListSortDirection.Descending);
}

只需将项目插入正确的位置就足以使网格显示正确排序的列表。我使用的是与您相同的 SortableBindingList,即 MartinWilley.com 上显示的那个。

您的问题可能是您正在添加而不是插入吗?

关于c# - Datagridview/BindingSource 和排序 : add record at end of list,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2113381/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com