1

在 Asp.net 中,我有一个列表视图,其中有一个名为“金额”的列。负数显示为 (111.111),正数显示为 111.11。如何右对齐十进制的数字?如果没有任何括号,那将很容易。但是,这是一个要求。

谢谢

4

2 回答 2

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;";
    }
于 2012-12-31T21:53:10.787 回答
0

这将是棘手的。

我可以想到两种方法来解决这个问题。

  1. 将值分成两列。右对齐包含小数点前任何内容的第一列。左对齐包含小数点和任何尾随数字的第二列。这样做的缺点是它位于两个不同的单元格中,这意味着您不能简单地双击内容来复制和粘贴它等。

  2. 用于Graphics.MeasureString准确计算需要在列上放置多少像素的填充。

于 2012-12-31T20:22:09.773 回答