몇 가지 권장 사항에서 DataGridView.Rows.Add(...)
대신 DataSource
을 DataGridView
에 할당하기 시작했습니다. 내 데이터 소스가 이미 많이 변경되지 않은 큰 목록이므로 편리합니다. 그러나 DataSource
지정을 사용하면 열을 정렬 할 수 없게됩니다. 할당 된 데이터 소스로 DataGridView에서 정렬을 어떻게 활성화합니까?
class MyGridView : DataGridView
{
private List<Person> m_personList;
private class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public Person(string first, string last)
{
FirstName = first;
LastName = last;
}
}
public MyGridView()
{
/* ...initialise stuff... */
m_personList.Add(new Person("Kate", "Smith"));
m_personList.Add(new Person("Bill", "Davids"));
m_personList.Add(new Person("Ann", "Roth"));
this.DataSource = m_personList;
}
}
는 또한
BindingList<Person>
에 의해
BindingSource
에 의해
List<Person>
를 교체했지만, 그 어느 것도 중요 할 것 같다.
this.SortCompare += MyGridView_SortCompare;
private void MyGridView_SortCompare(object sender, EventArgs e)
{
/* ...Compare method...*/
}
도 추가로 시도해 보았습니다. 데이터 소스로 정렬 할 수있는 다른 방법이 있습니까?
참고 : 내 데이터 소스는 SQL (필수)이 아니며 단지 List
입니다.
이 당신이 http://msdn.microsoft.com/en-us/library/system.web.ui 찾고있는 무엇인가 :
의 DataTable에 목록을 변환하는 경우, 문서를 참조하십시오. webcontrols.gridview.sort.aspx? –나는 확실히 모르겠다. 그러나 나는 그것이 있다고 생각하지 않는다. DataSource를 사용하지 않고 모든 행을 추가 할 때처럼 열 머리글을 클릭하면 모든 것이 정렬됩니다. 복잡한 Sort 메서드를 구현하려고하지 않습니다. – Yellow
위의 링크는 매우 단순한'MyGridView.Sort ("ColumnName", SortDirection.Ascending);','RowDataBound' 안에 넣거나 새 행을 추가 할 때마다 위치시킵니다. –