我有以下代碼工作。
請原諒粗略的代碼 - 我只是展示了關鍵部分,但如果需要,我可以提供更完整的示例。
我有一個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