我有以下代码工作。
请原谅粗略的代码 - 我只是展示了关键部分,但如果需要,我可以提供更完整的示例。
我有一个SortableBindingList _names绑定到我的DataGridView。然后在我的表单中,我有一个按钮,在Click Click处理程序中添加了一个新名称。这是工作正常添加名称凯文之间joe和皮特。
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上显示的那个。
你的问题可能是你添加,而不是插入?
你有没有实现类似MSDN SortableBindingList?一些代码可能有助于解决这个问题。你是否直接将记录插入到绑定列表中? – 2010-01-21 22:30:30
不是一个愚蠢的问题。 – John 2010-01-21 22:32:34
@大卫,那是真的。示例为我与BindingList diid:http://www.martinwilley.com/net/code/forms/sortablebindinglist.html – robertpnl 2010-01-21 22:42:52