在Asp.net中,我有一個列表視圖有一個名爲「金額」的列。負數顯示爲(111.111),而憐憫#顯示爲111.11。我如何正確對齊十進制數字?如果沒有任何括號,這很容易。但是,這是一項要求。Listview對齊十進制貨幣的貨幣
謝謝
在Asp.net中,我有一個列表視圖有一個名爲「金額」的列。負數顯示爲(111.111),而憐憫#顯示爲111.11。我如何正確對齊十進制數字?如果沒有任何括號,這很容易。但是,這是一項要求。Listview對齊十進制貨幣的貨幣
謝謝
當數字爲非負值時,使括號與背景相同。正確對齊。
<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;";
}
有沒有辦法返回一個不同的值取決於瀏覽器(例如IE,chorme,Firefox等)在代碼隱藏「Getstyle()」中的值 –
您可以使用下面的代碼:http://msdn.microsoft.com/en-us/library/3yekbd5b v = VS.100)的.aspx – andleer
這將是棘手。
我可以用兩種方法來解決這個問題。
將值分成兩列。右對齊第一列,其中包含小數點前的任何內容。左對齊包含小數的第二列和任何尾隨數字。這樣做的缺點是,它是在兩個不同的細胞,這意味着你不能簡單地雙擊要複製的內容&粘貼等
使用Graphics.MeasureString
來計算你需要到底有多少填充像素放在列上。
如何確定listview項是否爲正數,以便我可以添加填充?有沒有一個If語句可以在itembound中使用? –
是的,您可以在ListView的'ItemDataBound'事件中檢查。看看這個帖子的進一步解釋:[獲取數據值從ListView ItemDataBound](http://stackoverflow.com/questions/1588500/get-data-value-from-listview-itemdatabound) –
你是說右對齊列不夠好嗎?你需要將111.11值填充到數值與「(111.111)」值完全一致的位置? –
這裏是一個堆棧帖子,解決此問題:http://stackoverflow.com/questions/2332912/c-sharp-double-formatting-align-on-decimal-sign – briskovich
是的。我試圖將111.11與小數點對齊(111.11)。不知道我會如何在列表視圖中執行此操作。 –