我有以下代码:
<div class="featpropv3_price"><span class="featpropv3_price_o"><%# IIf(DataBinder.Eval(Container.DataItem, "amount") <> 0, DataBinder.Eval(Container.DataItem, "currency"), "")%></span> <span class="featpropv3_price_r"><%# iif(DataBinder.Eval(Container.DataItem, "amount") <> 0,formatnumber(DataBinder.Eval(Container.DataItem, "amount"),0,0,0,-1),"POA") %></span>
检查它是否等于IsDBNull
I have try:
IIf(DataBinder.Eval(Container.DataItem, "amount") <> 0 or DataBinder.Eval(Container.DataItem, "amount" IsDBNull.
我想做的是,如果它是0或IsDBNull,我想显示POA
编辑:我想我需要这样的东西:
<%# IIf(Not IsDBNull(DataBinder.Eval(Container.DataItem, "amount")), if( DataBinder.Eval(Container.DataItem, "amount") <> 0, DataBinder.Eval(Container.DataItem, "currency"), "")%>
您的问题是您正在使用IIF。IIF是一个接受三个参数并返回一个的FUNCTION——它对于避免null引用是没有用的。相反,您应该使用VB2008引入的IF运算符。IF操作符是一个实际操作符,除非需要,否则它不会计算"false"分支。
您应该使用IsDBNull
函数。用AndAlso
保证短路评定
<div class="featpropv3_price">
<span class="featpropv3_price_o">
<%# IIf(Not IsDBNull(DataBinder.Eval(Container.DataItem, "amount")) AndAlso DataBinder.Eval(Container.DataItem, "amount") <> 0, DataBinder.Eval(Container.DataItem, "currency").ToString(), "")%>
</span>
<span class="featpropv3_price_r">
<%# iif(Not IsDBNull(DataBinder.Eval(Container.DataItem, "amount")) AndAlso DataBinder.Eval(Container.DataItem, "amount") <> 0, formatnumber(DataBinder.Eval(Container.DataItem, "amount").ToString(),0,0,0,-1),"POA") %>
</span>
更新:调用ToString()
是因为(不像c#中的:?
, VB的Iif
是一个函数,运行时应该在传递它们之前评估所有参数,如果你不调用ToString()
,你会在第二个Iif
上得到InvalidCastException
。
UPATE 2:
OK。我只写了If:
<div class="featpropv3_price">
<span class="featpropv3_price_o">
<%If Not IsDBNull(DataBinder.Eval(Container.DataItem, "amount")) AndAlso DataBinder.Eval(Container.DataItem, "amount") <> 0 Then%>
<%# DataBinder.Eval(Container.DataItem, "currency")%>
<% Else %>
<%= ""%>
<% End If%>
</span>
<span class="featpropv3_price_r">
<% If Not IsDBNull(DataBinder.Eval(Container.DataItem, "amount")) AndAlso DataBinder.Eval(Container.DataItem, "amount") <> 0%>
<%# formatnumber(DataBinder.Eval(Container.DataItem, "amount").ToString(),0,0,0,-1)%>
<% Else %>
<%= "POA" %>
<%End If%>
</span>