在 Asp.net 中,我有一个列表视图,其中有一个名为“金额”的列。负数显示为 (111.111),正数显示为 111.11。如何右对齐十进制的数字?如果没有任何括号,那将很容易。但是,这是一个要求。
谢谢
在 Asp.net 中,我有一个列表视图,其中有一个名为“金额”的列。负数显示为 (111.111),正数显示为 111.11。如何右对齐十进制的数字?如果没有任何括号,那将很容易。但是,这是一个要求。
谢谢
当数字为非负数时,括号的颜色与背景相同。右对齐。
<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;";
}
这将是棘手的。
我可以想到两种方法来解决这个问题。
将值分成两列。右对齐包含小数点前任何内容的第一列。左对齐包含小数点和任何尾随数字的第二列。这样做的缺点是它位于两个不同的单元格中,这意味着您不能简单地双击内容来复制和粘贴它等。
用于Graphics.MeasureString
准确计算需要在列上放置多少像素的填充。