2014-10-11 4 views
0

내가하는 List<CallLog>이 곳 CallLog가 다음과 같은 속성 : 나는 (DevExpress의) 그리드 데이터 소스를 작성해야이 너무 오래 걸립니다 (C#을)

public string SomeProperty1 { get; set; } 
public string SomeProperty2 { get; set; } 
public string SomePropertyN { get; set; } 
public DateTime Date { get; set; } 
public DateTime CallEndTime { get; set; }  

이 목록과. 그리드에는 다음 열이 있습니다.

날짜 | SomeProperty1 | SomeProperty2 | ... | SomePropertyN | CallStartTime | CallEndTime

사실

, 나는 첫 번째 열 (일)에, 나는 단지 date 부분을 사용하고 다른 열 (CallStartTime)에서, 나는 단지 time 부분을 사용, 2 열에서 Date 속성을 사용하고 있습니다.

불행히도 gridxview은 두 개의 열에 내 Date 속성의 다른 형식을 표시하도록 요청할 때 적절한 그룹화를 수행하지 못합니다. 따라서 맞춤 클래스를 만들고 원래 목록을 새 목록 (List<CustomizedCallLog>)으로 복사하고 새 목록을 표 데이터 원본으로 전달하기로 결정했습니다. 아래는 내가이 일을하는 방법이다. 그러나 너무 오래 걸립니다. 목록을 복사하는 빠른 방법이 있습니까?

내 사용자 정의 통화 기록 클래스 : 그리드를 설정

Public Class CustomizedCalLog 
{ 
    public DateTime Date { get; set; } 
    public string SomeProperty1 { get; set; } 
    public string SomeProperty2 { get; set; } 
    public string SomePropertyN { get; set; } 
    public string CallStartTime { get; set; } 
    public string CallEndTime { get; set; } 

    public CustomizedCallLog(CallLog log) 
    { 
     this.Date = log.Date; 
     this.SomeProperty1 = log.SomeProperty1 ; 
     this.SomeProperty2 = log.SomeProperty2 ; 
     this.SomePropertyN = log.SomePropertyN ; 
     this.CallStartTime = log.Date.ToString("H:mm"); 
     this.CallEndTime = log.CallEndTime.ToString("H:mm");   
    }   
} 

:

private void SetGrid() 
{ 
    var logs = someBusiness.GetLogs(); 
    List<CustomizedCallLog> dataSource = new List<CustomizedCallLog>(); 
    foreach (var log in logs) 
    { 
     dataSource.Add(new CustomizedCallLog(log)); 
    } 

    grid.ForceDataRowType(typeof(CustomizedCallLog)); 
    grid.DataSource = dataSource; 
    grid.DataBind(); 
} 
+2

* 아래 내용은 어떻게 수행하고 있습니까? 하지만 너무 오래 걸립니다 * 코드를 벤치마킹 해 보셨습니까? 목록을 복사 할 때 병목 현상이 발생하는지 확실합니까? –

+0

네 말이 맞아, 병목 현상은'This.SomePropertyX = log.SomePropertyX; '와 함께있다. – Yalda

+0

나는이 방법을 시도해 볼 수 있다고 생각한다. 새 클래스를 만들지는 말고,이 두 가지 새로운 속성을 기존 클래스에 추가한다. 두 속성의 getter에서 서식이 지정된 문자열을 반환합니다. 이 같은 몇 가지 .. –

답변

0

내 문제는 @Yuval Itzchakov로 주석을 사용하여 해결됩니다.

기존 클래스가 일부 .tt 파일과 함께 자동 생성되었으므로 기존 클래스에 새 속성을 추가 할 수 없습니다.

그래서 코드를 그대로두고 병목 현상을 일으키는 코드 this.SomePropertyX = log.SomePropertyX 비트를 개선했습니다.