这将是一个愚蠢的问题,但我有一个带有BindingSource作为数据源的datagridview.
bindingSources.Datasource是一个自带的BindingList,具有排序支持.这一切都有效.
但是当一个记录将被插入到排序列表中时,它将被放置在datagridiview的末尾.刷新后(单击鼠标的示例),记录将放在正确的位置.
所以,我认为我忘了要实现或调用以确保插入的记录将直接显示在datagridview的正确位置.
谁可以帮我提示.
谢谢.
我使用以下代码进行了此操作。
请原谅粗糙的代码 - 我只是展示关键部分,但如果您需要,我可以提供更完整的示例。
我有一个 SortableBindingList _names 绑定到我的 DataGridView。然后在我的表单上有一个按钮,在单击事件处理程序中添加了新名称。在joe和pete之间添加名字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; }
}
Run Code Online (Sandbox Code Playgroud)
所以关键是我在添加到列表后对 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);
}
Run Code Online (Sandbox Code Playgroud)
只需将项目插入正确的位置就足以使网格显示正确排序的列表。我使用与您相同的 SortableBindingList,即 MartinWilley.com 上显示的那个。
您的问题可能是您正在添加而不是插入吗?
| 归档时间: |
|
| 查看次数: |
3684 次 |
| 最近记录: |