for (int iCount = 0; iCount < oForm.LineItems.Count; iCount++)
{
// cartDetails是一个字符串构建器。
cartDetails.Append(String.Format("{0:0}", oForm.LineItems[iCount].Quantity));
cartDetails.Append(String.Format("{0:0.00}", oForm.LineItems[iCount].Price));
cartDetails.Append(String.Format("{0:0.00}", oForm.LineItems[iCount].ExtendedPrice));
//cartDetails.Append(string.Format("{0,10:#,##0.00}", oForm.LineItems[iCount].Price) + "</TD><TD>");
//cartDetails.Append(string.Format("{0,10:#,##0.00}", oForm.LineItems[iCount].ExtendedPrice) + "</TD><TD>");
//cartDetails.Append(String.Format("{0}", oForm.LineItems[iCount].Quantity).PadLeft(4)+ "</TD><TD>");
//cartDetails.Append(String.Format("{0:0.00}", oForm.LineItems[iCount].Price).PadLeft(8) + "</TD><TD>");
我已经使用了我正在使用的源代码。我添加数量,价格,扩展价格和所有都是十进制列。我要做的就是用左边的空间填充。小数舍入为2位似乎正在发生。
上面那些注释的行是我尝试过的其他一些选项。 目前,如果qty具有诸如4和40之类的值,则当我将它们打印在表格中时它们不会对齐。与价格相同。
有人请建议我在这做什么?
更新1:尝试了卢卡斯的建议,但它无效。这就是我要做的事。
cartDetails.Append(String.Format(“{0:0,10}”,oForm.LineItems [iCount] .Quantity));
当我尝试上述操作时,无论oForm.LineItems [iCount]中的值如何,每行显示10个.Quantity。
如果我改变了 String.Format(“{0:0,4}”,它显示04为所有记录
答案 0 :(得分:5)
您可以使用AppendFormat
方法而不是附加格式化字符串。
正确的格式也是{index,padding:format}
。并考虑使用foreach
代替for
:
foreach (var lineItem in oForm.LineItems)
{
cartDetails.AppendFormat("{0,4:0}", lineItem.Quantity);
cartDetails.AppendFormat("{0,10:0.00}", lineItem.Price);
// etc
}
答案 1 :(得分:1)
备注:这是用于基于字体的表示(如文本文件)中的对齐
查看composite formatting (MSDN)中的最后一部分。
首先根据需要格式化数字,然后填充结果
cartDetails.AppendFormat("{0,4}", // padding with spaces
String.Format("{0:0}", oForm.LineItems[iCount].Quantity)); // format number
Addtition:如果您想将数据放在html表中,则应使用css(或内联样式)
<td class="right">This is right aligned</td>
用css
.right { text-align: right; }
或内联:
<td style="text-align: right">This is right aligned</td>