2013-02-17 4 views
0

저는 C# 프로젝트에서 작업 중이며 정말 이상한 문제가 있습니다.데이터 격자에 데이터 추가

파일을 읽고 행을 처리하고 결과를 목록 배열 내의 별도 변수에 저장하고 있습니다. 그런 다음 목록 배열을 거쳐 DataGrid에 채 웁니다.

파일을 성공적으로로드하고 그 행에 파일의 새 행을 만들지 만 각 행은 비어 있으며 표시되는 열이 없습니다. 아래는 어떻게 보이는지 보여주는 스크린 샷입니다.

View if datagrid after loading file

내가 그것을 디버깅 나는 변수의 내용과 예상대로 모든 텍스트가 볼 수 있습니다. 다음은

아래 UPDATE 는 데이터 그리드가 AutoGenerateColumns 속성을 설정 XML

<DataGrid ColumnWidth="*" AutoGenerateColumns="False" Margin="12,51,12,12" Name="logCatDataGrid" /> 
+0

왜 당신이 당신의 데이터를 저장하는 적절한 뷰 모델 (또는 모델)를 만들 수 있습니까? 그 행'[loglevel], 행 [태그], 행 [etc]'는 끔찍합니다. 또한, 당신은 기본적으로'LogCatDetails' 물건을 끔찍한 것으로 싸고있는 것을 봅니다. 왜 DataGrid를'LogCatDetailsList'에 직접 바인딩하지 않습니까? –

+0

Boardy, XAML을 보여주십시오. – Khan

+0

@JefferyKhan DataGrid의 xaml을 포함하도록 질문을 업데이트했습니다. – Boardy

답변

1

에 정의 된 방법을 제공 할 수있는 모든 도움을 내가

private void loadNonVerbose(List<LogCatDetails> logCatDetailsList) 
     { 
      DataSet ds = new DataSet(); 
      DataTable table = new DataTable(); 
      DataColumn logLevel = new DataColumn("Log Level", typeof(string)); 
      DataColumn tag = new DataColumn("Tag", typeof(string)); 
      DataColumn processID = new DataColumn("Process ID", typeof(int)); 
      DataColumn message = new DataColumn("Message", typeof(string)); 

      table.Columns.Add(logLevel); 
      table.Columns.Add(tag); 
      table.Columns.Add(processID); 
      table.Columns.Add(message); 

      ds.Tables.Add(table); 

      int i = 0; 
      foreach (LogCatDetails logCatDetails in logCatDetailsList) 
      { 
       DataRow row = table.NewRow(); 
       row[logLevel] = logCatDetails.LogLevel.ToString(); 
       row[tag] = logCatDetails.Tag; 
       row[processID] = logCatDetails.ProcessID; 
       row[message] = logCatDetails.Message; 
       table.Rows.Add(row); 
       if (i == 10) 
       { 
        break; 
       } 
       i++; 
      } 

      logCatDataGrid.ItemsSource = ds.Tables[0].DefaultView; 
     } 

감사를 사용하고있는 코드는 DataGrid ~ True :

<DataGrid ColumnWidth="*" AutoGenerateColumns="True" Margin="12,51,12,12" Name="logCatDataGrid" /> 

HighCore는 정확하며 지침을 따르는 것이 좋습니다. DataSet/DataTable은 불필요합니다. 당신은 단순히 다음에 code-behind을 수정하여이 문제를 단순화 수 :

private void loadNonVerbose(List<LogCatDetails> logCatDetailsList) 
{ 
    logCatDataGrid.ItemsSource = logCatDetailsList; 
} 
+1

이렇게해도 'DataTable'항목을 제거하십시오. 그것의 전혀 필요하지 않은 및 unneded 코드를 많이 추가합니다. –

+0

두 분 모두 도와 주셔서 감사합니다. 수동으로 모든 것을 작성하는 대신 목록을 데이터 그리드에 직접 바인딩하는 방법에 대한 조언을 받았습니다. 네가 할 수 있다는 걸 잊어 버렸어. 다시 한 번 감사드립니다. – Boardy

관련 문제