2011-07-28 8 views
0

레코드를 삽입 한 후 경과 된 시간을 보여주는 XtraGrid 열이 있습니다. 나는 이것을 서버에서 계산하고 시간을 문자열로 반환한다.시간을 열어 올바르게 정렬

문제는 Sort Problem

정렬이 더 잘 작동 할 수있는 방법으로 그것을 만드는 방법 어떤 생각 ... 그 9 일 더 또한 23 일 어떻게 이미지를 참조하시기 바랍니다 올바르게 정렬되지이다 ?

+2

당신의 CustomDisplayText 이벤트 내에서

은 셀의 값은 단지 텍스트인가? 데이터 바운드입니까? 알파벳순으로 정렬 된 것 같습니다. 백업 값이 실제 DateTime 인 경우이를 대신 사용하여 정렬합니다. –

+0

이 값은 원래 문자열이거나 가능하면 TimeSpans입니까? –

+0

현재 나는 서버에서 격자에서 하나의 긴 문자열을 전달한다고 계산합니다. – Ezi

답변

2

이 문제를 해결할 수있는 방법 중 하나는 데이터베이스에 int64로 값을 저장하는 것입니다. 따라서 서버 측에서 정렬하고 응용 프로그램 측에서 틱에서 TimeSpans를 만들면 처리 할 수 ​​있습니다. CustomColumnDisplayText을 사용하여 원하는대로 표시하고 열이 DisplayText가 아닌 Value로 정렬되도록 설정합니다. 당신의 GridView 장소

TimeSpan span = TimeSpan.FromTicks(e.Value); 
e.DisplayText = string.Format("{0} days {1} hours {2} minutes", span.Days, span.Hours, span.Minutes); 
+0

밑줄이있는 데이터가 날짜 인 그리드에서 '1 일 5 시간'을 표시하는 방법을 이해할 수 없습니다. – Ezi

+0

이 정렬 된 Ezi를 얻었습니까? 아이디어는 기본 데이터가 Int64 (Long)가 될 것입니다. 그런 다음 CustomColumnDisplayText 내에서 eventargs e.Value에서 해당 숫자를 가져 와서 TimeSpan에 연결하면 e.DisplayText 값을 설정하여 '1 일 5 시간'을 표시 할 수 있습니다. 모두가 잘되기를 바랍니다. – AussieALF

+0

아니요 .. 아직도 작동하지 않습니다. '1 일 5 시간'을 표시하기 위해 긴 값을 변환하는 방법에 대한 샘플 코드를 제공 할 수 있습니까? 감사합니다 – Ezi

0

SQL 문을 사용하여 서버에서 정렬 할 수 있습니다. DB를 가져 오는 것으로 가정합니다. 다른 옵션은 일종의 timespan으로 시간을 파싱하고이를 정렬하는 것과 관련된 자체 비교 함수를 작성하는 것입니다.

+0

사용자가 정렬을 변경할 수 있어야하기 때문에 서버 정렬은 옵션이 아닙니다. – Ezi

+0

아, 그러면 구문 분석 기능을 작성하여 텍스트를 시간대로 구문 분석하는 방법을 살펴 보겠습니다. 또는 실제 시간 범위를 다시 전달하여 숨겨진 열로 사용할 수 있습니다. 숨겨진 열을 사용하도록 정렬하려면 몇 가지 속임수를 사용해야합니다. –

+0

시간대는 어떻게 생겼습니까? – Ezi

관련 문제