我已经编写了以下代码来显示数据
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();
并且,它将数据显示为:
如何改善它以便正确显示?
答案 0 :(得分:3)
我认为这是一个控制台应用程序,因此无法使用数据网格。
因此,您需要确定每个字段的大小,然后根据相应的数据将字符串填充到正确的长度。
根据数据类型的不同,您可能需要向左或向右填充。
为了帮助您,您可以使用;
String.PadLeft
String.PadRight
微软网站有更多详细信息; 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语句中。