데이터베이스의 저장 프로 시저에서 반환 된 데이터를 보유하고있는 DataGridView가 있습니다. 열은 반환 값마다 다르므로 강력한 형식의 이름은 사용하지 마십시오. 현재 숫자 열이 문자열로 정렬되어 있으므로 이러한 순서를 정하기 위해 고심하고 있습니다 (예 : 1 -> 10 -> 11 -> 15 -> 2 -> 25 -> 3이며 가치가 아닌. 열의 ValueType이 올바르게 설정되었는지 확인했습니다. 이 시도 가지고 _rowArray은 데이터 행의 배열이며, DataGridView에의 데이터 소스이고, columnIndex에 사용자에 의해 주문하고자 _rowArray에서 열 정수 변수를 지정하는 것OrderBy 명명 된 인덱스
var sortedRows = from row in _rowArray
orderby columnIndex
select row;
_rowArray = sortedRows.ToArray();
. 디버깅하는 동안 sortedRows는 LINQ 문 바로 뒤에 오는 동일한 순서로 _rowArray와 동일한 순서를 유지한다는 것을 알 수 있습니다.
_rowArray = _rowArray.OrderBy(r => r[columnIndex]).ToArray();
을하고 DataView를 (보기)를 만드는 시도하고 이런 짓을했는지 : 나는 또한 시도
view.Sort = m_data.Tables[0].Columns[columnIndex].ColumnName + " ASC";
을 ...하지만 그 일을하지 않았다. 누구나 통찰력을 제공합니까?
자체적으로 문제를 제시
나는 다른 스레드에서 구문 분석 방법을 사용했다. 첫째, int가 아닌 모든 값 유형이 될 수 있습니다. 둘째, null 일 수 있습니다. 또한 Double, int 등으로 구문 분석하기 전에 r [columnIndex]을 문자열로 변환해야합니다. – MrShoes값 유형을 모르는 경우에는 단순히 정수로 정렬 될 것으로 기대할 수 없습니다.). 다른 대안은 Comparer을 사용하여 이전 방식으로 정렬하는 것입니다. –
var dataType = dataGridView1.Columns [columnIndex] .ValueType;을 사용하여 데이터 유형을 가져올 수 있습니다. – MrShoes