2011-10-07 5 views
0

Dataagridview의 자동 정렬에 문제가 있습니다. 열 머리글을 한 번 클릭하면 값이 정렬되지만 삼각형 기호는 변경되지 않으므로 잘못된 방향을 가리 킵니다. 두 번째 클릭하면 변경되는 삼각형입니다 (다른 방향을 가리 키지 만 DataGridview의 값과 비교할 때 정확함) 그런 다음 정렬 프로세스가 반복됩니다. 따라서 열을 정렬하려면 클릭해야합니다 머리글 두 번 : 방향 표시/글리프를 변경하려면 먼저, 값을 정렬하려면 두 번째.열을 정렬하려면 datagridview를 두 번 클릭해야하는 이유

여기서는 이것이 중요하지 않다고 생각하지만이 DGV의 경우 데이터 소스로 BindingList를 사용했습니다.

디자이너 코드 :

 // 
     // dgv 
     // 
     this.dgv.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; 
     this.dgv.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { 
     this.monthColumn, 
     this.colorColumn}); 
     this.dgv.Location = new System.Drawing.Point(22, 127); 
     this.dgv.Name = "dgv"; 
     this.dgv.Size = new System.Drawing.Size(468, 164); 
     this.dgv.TabIndex = 0; 
     this.dgv.CellBeginEdit += new System.Windows.Forms.DataGridViewCellCancelEventHandler(this.dgv_CellBeginEdit); 
     this.dgv.CellClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgv_CellClick); 
     this.dgv.CellEndEdit += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgv_CellEndEdit); 
     this.dgv.RowsAdded += new System.Windows.Forms.DataGridViewRowsAddedEventHandler(this.dgv_RowsAdded); 
     // 
     // monthColumn 
     // 
     this.monthColumn.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.AllCells; 
     dataGridViewCellStyle3.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; 
     this.monthColumn.DefaultCellStyle = dataGridViewCellStyle3; 
     this.monthColumn.HeaderText = "Miesiące"; 
     this.monthColumn.Name = "monthColumn"; 
     this.colorColumn.ValueType = typeof(int); 
     this.monthColumn.Width = 72; 
     // 
     // colorColumn 
     // 
     this.colorColumn.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; 
     dataGridViewCellStyle4.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; 
     this.colorColumn.DefaultCellStyle = dataGridViewCellStyle4; 
     this.colorColumn.HeaderText = "Barwa"; 
     this.colorColumn.Name = "colorColumn"; 
     this.colorColumn.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; 
     this.colorColumn.ValueType = typeof(System.Drawing.Color); 

바인딩 절차 :

 dgv.AutoGenerateColumns = false; 
     monthColumn.DataPropertyName = "Months"; 
     colorColumn.DataPropertyName = "Color"; 
     colorColumn.ReadOnly = false; 
     dgv.DataSource = bcolors;//BindingList 
     dgv.Sort(monthColumn, ListSortDirection.Ascending); 

이벤트 방법 행의 backgroundColor을 적용하고 colorColumn을 (읽기 전용 작동하지,하지만이 지점 아니다 않는 편집을 허용하는 데 사용됩니다? 여기)

답변

0

열의 정렬 모드를 변경하여 시도 할 수 있습니까?

변경이이에

this.colorColumn.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; 

: 내가 사용하는 이유

this.colorColumn.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic; 
+0

이, 내 경우에는 아무것도 변경되지 않습니다 또한 내가 정말이 열이 정렬되고 싶지 않아, 그건 NotSortable 설정. –

관련 문제