2012-11-29 3 views
1
for (int iCount = 0; iCount < oForm.LineItems.Count; iCount++) 
      { 

// cartDetails는 여기에 stringbuilder입니다.선행 공백으로 십진수를 덧붙이려고 시도합니다.

 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>"); 

내가 사용하고있는 소스 코드를 pastd했습니다. qty, price, extendedprice를 추가하고 모두 십진수 열입니다. 내가하고 싶은 것은 선두 공간으로 왼쪽을 칠하는 것입니다. 십진수 2 자리로 반올림이 발생하는 것 같습니다.

위의 주석 처리 된 행은 내가 시도한 다른 옵션 중 일부입니다. 현재 qty의 값이 4와 40 인 경우 테이블에 인쇄 할 때 정렬되지 않습니다. 가격과 동일합니다.

누군가 내가 여기서 뭘하고 있는지 제안 해주세요.

업데이트 1 : 시도한 루카스 제안이지만 작동하지 않습니다. 여기 내가 얻고있는 것이있다.

cartDetails.Append (String.Format ("{0 : 0,10}", oForm.LineItems [iCount] .Quantity)));

위의 내용을 시도하면 oForm.LineItems [iCount] .Quantity의 값과 관계없이 모든 행에 대해 10이 표시됩니다.

내가 및 String.format ("{0 : 0.4}을"변경하면, 모든 기록

04 보여줍니다
+0

가 왜'AppendFormat'를 사용할 수 있습니까? –

+0

@ lazyberezovsky : 예를 들어 주시겠습니까? – NewCoder

답변

1

비고 : 이것은 텍스트 파일로 caracter 기반 표현 alignemend입니다

composite formatting (MSDN)의 마지막 부분에서보세요.

먼저 형식 원하는대로 번호와 패드 결과를

cartDetails.AppendFormat("{0,4}", // padding with spaces 
    String.Format("{0:0}", oForm.LineItems[iCount].Quantity)); // format number 
당신이 CSS를

.right { text-align: right; } 

또는 인라인으로

<td class="right">This is right aligned</td> 

를 CSS (또는 인라인 스타일)을 사용해야합니다 HTML 테이블에 데이터를 배치하려면 :

<td style="text-align: right">This is right aligned</td> 
Addtition

+0

cartDetails.Append (String.Format ("{0 : 0,10}", oForm.LineItems [iCount] .Quantity))); 이것을 시도 할 때 oForm.LineItems [iCount] .Quantity의 값과 관계없이 모든 행에 대해 10을 표시합니다. 그리고 String.Format ("{0 : 0,4}")으로 변경하면 모든 레코드에 대해 04가 표시됩니다 . – NewCoder

+0

문자열 만 공백으로 채워져 있습니다. 샘플을 업데이트합니다. –

+0

텍스트 - 여기에 내가 빠뜨린 정렬이 중요합니다. – NewCoder

5

형식이 지정된 문자열을 추가하는 대신 AppendFormat 메서드를 사용할 수 있습니다. 올바른 형식은 {index,padding:format}입니다. 그리고 for 대신 foreach을 사용하여 고려하십시오

foreach (var lineItem in oForm.LineItems) 
{ 
    cartDetails.AppendFormat("{0,4:0}", lineItem.Quantity); 
    cartDetails.AppendFormat("{0,10:0.00}", lineItem.Price); 
    // etc 
} 
+0

나는 당신의 접근 방식을 시도했고 lineItem을 시도했다.소수 자리가있는 가격은 2 자리로 트림되지 않으며 짝수 (예 : 157) 인 경우 157.00으로 출력되지 않습니다. foreach로 시도했지만 lineItem에 수량, 가격이 표시되지 않습니다. – NewCoder

+1

@NewCoder가 확인 됨 -'{0,10 : 0.00}'은 십진수를 2 자리로 자릅니다. 나는. '34.123'이'34.12'로 표시됩니다. 코드를 확인하십시오. –

+0

2 자릿수로 트림하지만 157 일 경우 157.00으로 출력되지 않습니다. – NewCoder

관련 문제