2012-12-31 87 views
1

在Asp.net中,我有一個列表視圖有一個名爲「金額」的列。負數顯示爲(111.111),而憐憫#顯示爲111.11。我如何正確對齊十進制數字?如果沒有任何括號,這很容易。但是,這是一項要求。Listview對齊十進制貨幣的貨幣

謝謝

+0

你是說右對齊列不夠好嗎?你需要將111.11值填充到數值與「(111.111)」值完全一致的位置? –

+0

這裏是一個堆棧帖子,解決此問題:http://stackoverflow.com/questions/2332912/c-sharp-double-formatting-align-on-decimal-sign – briskovich

+0

是的。我試圖將111.11與小數點對齊(111.11)。不知道我會如何在列表視圖中執行此操作。 –

回答

1

當數字爲非負值時,使括號與背景相同。正確對齊。

<asp:ListView ID="MainListView" runat="server"> 
     <LayoutTemplate> 
      <table style="text-align:right;"> 
       <tr id="ItemPlaceholder" runat="server" /> 
      </table> 
     </LayoutTemplate> 
     <ItemTemplate> 
      <tr> 
       <td> 
        <span runat="server" style='<%# GetStyle() %>'>(</span> 
        <%# Eval("Item") %> 
        <span runat="server" style='<%# GetStyle() %>'>)</span> 
       </td> 
      </tr> 
     </ItemTemplate> 
    </asp:ListView> 

    protected void Page_Load(object sender, EventArgs e) 
    { 
     var values = new[] { 
      new { Item = 123.12}, 
      new { Item = -133.34} 
     }; 

     MainListView.DataSource = values; 
     MainListView.DataBind(); 
    } 

    protected string GetStyle() 
    { 
     if ((double)Eval("Item") < 0) 
      return string.Empty; 
     else 
      return "color: white;"; 
    } 
+0

有沒有辦法返回一個不同的值取決於瀏覽器(例如IE,chorme,Firefox等)在代碼隱藏「Getstyle()」中的值 –

+0

您可以使用下面的代碼:http://msdn.microsoft.com/en-us/library/3yekbd5b v = VS.100)的.aspx – andleer

0

這將是棘手。

我可以用兩種方法來解決這個問題。

  1. 將值分成兩列。右對齊第一列,其中包含小數點前的任何內容。左對齊包含小數的第二列和任何尾隨數字。這樣做的缺點是,它是在兩個不同的細胞,這意味着你不能簡單地雙擊要複製的內容&粘貼等

  2. 使用Graphics.MeasureString來計算你需要到底有多少填充像素放在列上。

+0

如何確定listview項是否爲正數,以便我可以添加填充?有沒有一個If語句可以在itembound中使用? –

+0

是的,您可以在ListView的'ItemDataBound'事件中檢查。看看這個帖子的進一步解釋:[獲取數據值從ListView ItemDataBound](http://stackoverflow.com/questions/1588500/get-data-value-from-listview-itemdatabound) –