我已经在http://msdn.microsoft.com/en-us/library/aa480736.aspx上实现了SortableSearchableList类,并为它添加了一个Sort方法,如下所示:
public void Sort(PropertyDescriptor prop, ListSortDirection direction)
{
ApplySortCore(prop, direction);
}
Run Code Online (Sandbox Code Playgroud)
这个类在通过单击任何列标题对DataGridView进行排序时起作用,但是我需要能够以编程方式调用指定列的Sort方法(在本例中使用sortButton控件).我在网上找到的几个代码示例建议获取列的PropertyDescriptor并将其传递给ApplySortCore方法.我还没有那个工作.我可以获取DataGridView或SortableSearchableList的PropertyDescriptorCollection属性,但似乎无法获取Find方法来获取指定列/成员的PropertyDescriptor.这是我的其余代码:
namespace SortableBindingListTest
{
public partial class Form1 : Form
{
private SortableSearchableList<Tags> alarms = new SortableSearchableList<Tags>();
public Form1()
{
InitializeComponent();
alarms.Add(new Tags("some text", "1"));
alarms.Add(new Tags("more text", "2"));
alarms.Add(new Tags("another one", "3"));
dataGridView1.AutoGenerateColumns = false;
dataGridView1.AllowUserToAddRows = true;
dataGridView1.EditMode = DataGridViewEditMode.EditOnEnter;
dataGridView1.RowHeadersVisible = false;
dataGridView1.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill;
DataGridViewTextBoxColumn alarmColumn = new DataGridViewTextBoxColumn();
alarmColumn.DataPropertyName = "Alarm";
alarmColumn.Name = "Alarm";
alarmColumn.HeaderText = "Alarm";
DataGridViewTextBoxColumn messageColumn = new DataGridViewTextBoxColumn(); …Run Code Online (Sandbox Code Playgroud)