在asp.net转发器控件中执行数学计算

时间:2014-01-13 11:08:18

标签: c# asp.net .net repeater

我正在尝试将两个数字从前端asp页面上的DataBinder.eval中相乘,但它只返回0。

在数据库中,值如下;

PPI = 0.45 MDPI = 0.5

但它只为两者返回0.

<asp:Repeater runat="server" ID="rptFire">
    <ItemTemplate>
        <tr>
            <td>
                <%# DataBinder.Eval(Container.DataItem, "LocationName") %>
            </td>
            <td>
                <%# DataBinder.Eval(Container.DataItem, "SqrMtr") %>
            </td>
            <td>
                <%# Convert.ToInt32(DataBinder.Eval(Container.DataItem, "SqrMtr")) * Convert.ToInt32(DataBinder.Eval(Container.DataItem, "PPI")) %>
            </td>
            <td>
                <%# DataBinder.Eval(Container.DataItem, "PPI") %>
            </td>
            <td>
                <%# Convert.ToInt32(DataBinder.Eval(Container.DataItem, "SqrMtr")) * Convert.ToInt32(DataBinder.Eval(Container.DataItem, "MDPI")) %>
            </td>
            <td>WORK OUT</td>
            <td>WORK OUT</td>

        </tr>
    </ItemTemplate>
</asp:Repeater>

我可以这样做吗?

3 个答案:

答案 0 :(得分:3)

见下文:

<asp:Repeater runat="server" ID="rptFire">
    <ItemTemplate>
        <tr>
            <td>
                <%#Eval("LocationName") %>
            </td>
            <td>
                <%# Eval("SqrMtr") %>
            </td>
            <td>
                <%#String.Format("{0}", Convert.ToInt32(Eval("SqrMtr")) * Convert.ToInt32(Eval("PPI"))) %>
            </td>
            <td>
                <%# Eval("PPI") %>
            </td>
            <td>
                <%# String.Format("{0}",Convert.ToInt32(Eval("SqrMtr")) * Convert.ToInt32(Eval("MDPI"))) %>
            </td>
            <td>WORK OUT</td>
            <td>WORK OUT</td>

        </tr>
    </ItemTemplate>
</asp:Repeater>

答案 1 :(得分:1)

这是因为您正在尝试将内容转换为Integer

而不是你应该首先尝试将其转换为decimal而不是需要乘以:

<asp:Repeater runat="server" ID="rptFire">
    <ItemTemplate>
        <tr>
            <td>
                <%# DataBinder.Eval(Container.DataItem, "LocationName") %>
            </td>
            <td>
                <%# DataBinder.Eval(Container.DataItem, "SqrMtr") %>
            </td>
            <td>
                <%# Convert.ToDecimal(DataBinder.Eval(Container.DataItem, "SqrMtr")) * Convert.ToDecimal(DataBinder.Eval(Container.DataItem, "PPI")) %>
            </td>
            <td>
                <%# DataBinder.Eval(Container.DataItem, "PPI") %>
            </td>
            <td>
                <%# Convert.ToDecimal(DataBinder.Eval(Container.DataItem, "SqrMtr")) * Convert.ToDecimal(DataBinder.Eval(Container.DataItem, "MDPI")) %>
            </td>
            <td>WORK OUT</td>
            <td>WORK OUT</td>

        </tr>
    </ItemTemplate>
</asp:Repeater>

答案 2 :(得分:1)

使用

<%= %>

而不是

<%# %>

后者是一个数据绑定表达式,您可以使用DataBinder.Eval方法自行完成。

有关差异的说明,请参阅msdn