DataGridView에 열이 있으며, 기본적으로, 정렬 기능은 자동으로 단순히 데이터를 정렬하려는 데이터가 들어있는 열 머리글을 클릭하여 로그인합니다.
각 열은 우리가 NoSortable 자동 및 프로그래밍에서 설정할 수있는 속성 SortMode의 DataGridView가있다. 우리가이 속성을 변경하지 않을 경우, 자동에있을 것입니다.
당신은 숫자 열을 기준으로 정렬하지 않으려면 순서는 잘 작동합니다. 그 순서가 정확하지 않을 수 있도록 숫자 데이터는 텍스트로 정렬됩니다. 당신이 더 잘 이해 할 수 있도록 다음 예를 보여줍니다.
예를 들어, 우리는 형태와 DataGridView 컨트롤이 필요합니다. 이름, 그룹과 점수라는 세 개의 열을 추가합니다. 당신은 다음 이미지와 비슷한 나타납니다 :
다음 몇 가지 레코드를 추가 할 폼의 Load에서이 코드를 추가합니다 :
개인 서브하여 Form1_Load (System.EventArgs으로 개체, ByVal을 전자로 ByVal로 보낸) 손잡이 MyBase.Load DataGridView1.Rows.Add (새로운 문자열 () { "엘리사", "사용자", 24321}) DataGridView1.Rows.Add (새로운 문자열 () { "카를로스", "지원", 122}) DataGridView1.Rows.Add (새로운 문자열 () { "호세", "사용자", 423}) DataGridView1.Rows.Add (새로운 문자열 () { "세바스찬", "관리자", 1023}) DataGridView1.Rows.Add (새로운 문자열 () { "하비에르", "사용자", 111}) DataGridView1.Rows.Add (새로운 문자열 () { "슈", "사용자", 1}) DataGridView1.Rows.Add (새로운 문자열 () { "베로니카", "관리자", 24}) DataGridView1.Rows.Add (새로운 문자열 () { "가브리엘라", "사용자", 65}) DataGridView1.Rows.Add (새 문자열 () { "어거스틴", "사용자", 719}) DataGridView1.Rows.Add (새로운 문자열 () { "카밀라", "관리자", 4322}) DataGridView1.Rows.Add (새로운 문자열 () { "의 Melisa", "사용자", 654}) DataGridView1.Rows.Add (새로운 문자열 () { "릴리아나", "지원", 22}) End Sub 참고
지금, 그들은 세 개의 열을 기준으로 정렬 프로그램 테스트를 실행하는 방법을 잘 이해합니다. 여기에서는 점수 열을 기준으로 정렬하는 방법 때 표시됩니다 :
음, 그림은 매우 분명하다 : 1, 1023 111, 122, 22 ...하지 올바른 순서. 이 문제를 해결하기 위해 우리는 프로그래밍 자동 평가에 열의 순서를 변경해야합니다.
음, 지금은 우리의 양식으로 숫자 열의 순서를 예약하는 새로운 클래스를 추가 할 필요가 단지 첫 번째 단계, 클래스는 다음과 같습니다 :
Public 클래스 OrdenarColumnaNumerica System.Collections.IComparer를 구현 개인 sortOrderModifier으로 정수 = 1 정수 = 0으로 개인 골 공공 서브 뉴 (SORTORDER으로 ByVal로 SORTORDER, 정수로 ByVal로 열) COL = 열 SORTORDER은 = 다음 sortOrder.Descending 경우 sortOrderModifier = -1 다음 ELSEIF SORTORDER는 = sortOrder.Ascending sortOrderModifier = 1 종료하는 경우 End Sub 참고 공공 기능은 정수로 (객체와 객체, ByVal로 Y로 ByVal로 x)를 비교 _ System.Collections.IComparer.Compare를 구현 DataGridViewRow1 DataGridViewRow에 = CTYPE (X, DataGridViewRow를)로서 희미한 DataGridViewRow에 = CTYPE (Y, DataGridViewRow를)로서 DataGridViewRow2 희미한 * sortOrderModifier - (.. CLng 함수 (DataGridViewRow2.Cells (골) 값)) Math.Sign (CLng 함수 (DataGridViewRow1.Cells (골) 값))을 반환 함수 끝 최종 클래스
일단 우리가 숫자 열 순서를 취급하는 우리의 클래스를 가지고, 우리는 다음과 같은 이벤트 ColumnHeaderMouseClick DataGridView에에서 호출 :
DataGridView1_ColumnHeaderMouseClick 개인 서브 (System.Windows.Forms.DataGridViewCellMouseEventArgs으로 개체, ByVal로 이메일로 ByVal을 보낸 사람) 손잡이 DataGridView1.ColumnHeaderMouseClick 정수 = 1로 고정 주문 DataGridView1.Rows.Count> 0 그런 경우 = "구두점"그럼 DataGridView1.Columns (e.ColumnIndex). 이름 경우 다음 순서 = 1 경우 DataGridView1.Sort (새 OrdenarColumnaNumerica (e.ColumnIndex을 SortOrder.Ascending)) 주문 = 0 그렇지 않으면 DataGridView1.Sort (새 OrdenarColumnaNumerica (e.ColumnIndex을 SortOrder.Descending)) 주문 = 1 종료하는 경우 종료하는 경우 종료하는 경우 End Sub 참고
준비! 이제 프로그램을 실행하고 테스트하는 것만이 필요합니다. 이제 결과는 다음 사진을 올바른 순서에 같이 표시됩니다 :
난 당신이 기술을 잘 사용을 줄 수 있기를 바랍니다.
정보 Bitacoras.com ...
Bitacoras.com의 비율 : DataGridView에 열은 기본적으로, 정렬 기능은 자동으로 단순히 정렬하려는 데이터가 들어있는 열 머리글을 클릭하여 로그인하는 ......
안녕하세요 이와 같은 모든 운동을 다하고 난 문장 열에 오류가 그에게 따옴표를 배치했다 "또한없는 명령, 당신이 저를 도와주세요 불법적으로 grasias을
안녕, 난이 게시물이 매우 흥미로운 발견, 나는 열이 날짜가 있다면 그들이 할 수있는 방법을 궁금해, 문제는 SQL 쿼리와 그리드를 채울 때, 오직없이 저에게 날짜를 표시하는 VARCHAR로 변환하는 것입니다 시간이 아닙니다 그리드에서 그들을 주문하는 방법을 찾을
내가 SQL에서 테이블에 쿼리의 데이터 집합으로로드되는 데이터 그리드를 주문해야합니다. 내가 주문, 컬럼의 이름을 클릭 CDO.
대단히 감사합니다, 나는 약간의 도움이었다. 사용자가 클릭하고 당신의 도움으로 내가 원하는 것을 달성했다없이 나는 DataGridView 컨트롤을 정렬하는 데 필요한.
질문이 하나, 같은 날짜에 의해 정렬? 감사합니다.
좋은 친구는 저 많은이 도움이 ...
안녕하세요! 제가 비슷한 질문을하고 난 해결할 수 없습니다. 누구든지 나를 도울 수 있습니까? 그렇다면 나는 당신의 전자 우편에 도움이 될 수 있습니다 더 자세한 질문을 보내십시오. 감사합니다. 이 내 메일입니다 : nelson_nn_0800@hotmail.com는 저를 도와 주셔서 감사합니다!
나는 DataGridView1.Columns (e.ColumnIndex). 이름 경우 = "구두점"그럼이 오류 메시지가