2014-01-13 124 views
1

我试图从DataBinder.Eval的前端ASP网页上一起乘两个数字,但它只是返回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

见下文:

<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

这是因为您要的东西转化到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> 
1

使用

<%= %> 

而不是

<%# %> 

后者是一个数据绑定表达式,您通过使用DataBinder.Eval方法来完成自己的操作。

请参阅msdn了解有关差异的解释。