2017-02-07 7 views
-1

나는 데이터C#에서 멋진 테이블 형식으로 데이터를 표현하는 방법?

connection.Open(); 
SqlDataReader reader = command.ExecuteReader(); 
result += "--------------------------------------------------------------------------------------------------------\n\n"; 
result += "Product Name\t|\tCost Price\t|\tSold Quantity\t|\tSales Amount\t|\tNet Amount\t|\tProfit\t|\tSale Date\n\n"; 
result += "--------------------------------------------------------------------------------------------------------\n\n"; 
while (reader.Read()) 
{ 
     result += String.Format("{0}\t|\t{1}\t|\t{2}\t|\t{3}\t|\t{4}\t|\t{5}\t|\t{6:d}\n\n", reader[0], reader[1], reader[2], reader[3], reader[4], reader[5], reader[6]); 
} 
     result += "--------------------------------------------------------------------------------------------------------\n\n"; 
reader.Close(); 

를 표시하는 코드를 다음 서면으로 작성했습니다, 그것은 같은 데이터를 표시

enter image description here

가 어떻게 제대로 표시 개선 할 수 있습니까?

+0

왜이 용도로 DataGridView 또는 다른 컨트롤을 사용하지 않습니까? –

+0

"개선"은 무엇을 의미합니까? 더 자세하게 얘기해 주 시겠어요? [String.Format] (https://msdn.microsoft.com/en-us/library/system.string.format.aspx)의 모든 다른 형식 문자열을 살펴보십시오 – Sentry

+0

문자열을 데이터로 보내고 싶습니다. Microsoft Bot Framework의 채팅 봇에 표시됩니다. 그리고 "개선"한다는 것은 각 문자열이 셀에있는 것처럼 보이도록 테이블과 같이 보이기를 원합니다. – Spidy776

답변

3

나는 이것이 콘솔 응용 프로그램이라고 가정하므로 DataGrid를 사용할 수 없습니다.

각 필드의 크기를 계산 한 다음 적절한 데이터를 위해 문자열을 올바른 길이로 패딩해야합니다.

데이터 유형에 따라 왼쪽 또는 오른쪽으로 칠할 수 있습니다.

당신을 도울 수 있도록;

String.PadLeft 
String.PadRight 

Microsoft 웹 사이트에 대한 자세한 내용이 있습니다. Padding Strings in the .NET Framework

다음은 예입니다. 코드를 약간 조정해야 할 수도 있습니다.

string[] fields = new string[] { "Product Name", "Cost Price", "Sold Quantity", "Sales Amount", "Net Amount", " Profit", "Sale Date" }; 

    StringBuilder sb = new StringBuilder(); 
    string fieldSeperator = "\t|"; 
    foreach (String h in fields) 
     sb.Append(h + fieldSeperator); 

    sb.Append(Environment.NewLine); 

    while (reader.Read()) 
    { 
     foreach(string fieldName in fields) 
     { 
      switch (fieldName) 
      { 
       case "Product Name": sb.Append(reader[0].PadRight(fieldName.Length)); 
        break; 
       case "Cost Price":  sb.Append(reader[1].PadRight(fieldName.Length)); 
        break; 
       case "Sold Quantity": sb.Append(reader[2].PadRight(fieldName.Length)); 
        break; 
       case "Sales Amount": sb.Append(reader[3].PadRight(fieldName.Length)); 
        break; 
       case "Net Amount":  sb.Append(reader[4].PadRight(fieldName.Length)); 
        break; 
       case " Profit":   sb.Append(reader[5].PadRight(fieldName.Length)); 
        break; 
       case "Sale Date":  sb.Append(reader[6].PadRight(fieldName.Length)); 
        break; 

      }      
      sb.Append(fieldSeperator);      
     } 
     sb.Append(Environment.NewLine); 
    } 

    result = sb.ToString(); 

참고 : StringBuilder를 사용 했으므로 더 좋을 것입니다.

여기서는 필드 이름이 사용자 데이터와 같거나 더 긴 것으로 가정합니다. 이것이 "이익"필드에서 일어나는 경우가 아니라면 이것은 포맷팅을 약간 버리게됩니다. 따라서이 경우 필드 이름 앞에 여분의 공백을 추가했습니다.이 공백은 switch 문에도 필요합니다.

+0

콘솔 창에서 제대로 작동하지만 봇 프레임 워크에서 렌더링되지 않습니다. – Spidy776