如何在aspx中运行if语句?

时间:2010-10-15 15:17:23

标签: c# .net asp.net html gridview

我想运行if语句,但条件使用后面代码中的变量。我该如何调用该变量? 旁注...我正在使用gridview,变量位于数据集中(dsResult - idnbr colum)

<ItemTemplate>                        
   <% string temp = (Eval("idnbr").ToString());
   if (temp.Contains("X")) { %>
       <asp:Label ID="Label1" runat="server" Text='<%# (Eval("old_amt").ToString(),"ccTot") %>'></asp:Label>
   <% } else { %>
       <asp:Label ID="Label2" runat="server" Text='<%# (Eval("new_amt").ToString(),"ccTot") %>'></asp:Label>
   <% } %>
</ItemTemplate>

4 个答案:

答案 0 :(得分:4)

创建适合您的c#side方法: 比使用以下两种方式之一:

  • 如果你处理着名的实体(当GridView绑定到ObjectDatasource时说)你 可以将它投射到您的实体并传回:

C#:

 protected String MySelectorImpl(Object rowData)
 {
     MyEntity ent = (MyEntity)rowData;
     if(ent.idndr .... ) 
        return ....
     else 
        return ...
 }

ASP.Net:

<ItemTemplate>
    <asp:Label Text='<%# MySelector(Container.DatatItem) %>' ...

第二种情况 - 只需使用eval语法

C#:

protected string MySelector(Object condition, Object value1, Object value2)
{
    if((String)condition ....) return value1.ToString ....
}

ASP.Net:

<ItemTemplate>
    <asp:Label Text='<%# MySelector(Container.DatatItem("idnbr", ... %>' ...

(,

答案 1 :(得分:1)

我知道这并没有完全回答你的问题,但为什么不在后面的代码中这样做呢?我假设你正在使用DataBinding做什么?

string temp  = (string)DataBinder.Eval(e.Item.DataItem, "idnbr");
string newAmount = (string)DataBinder.Eval(e.Item.DataItem, "new_amt");
string oldAmount = (string)DataBinder.Eval(e.Item.DataItem, "old_amt");
Label lbl1        = e.Item.FindControl("label1") as Label;

if(temp.Contains("X") {
 lbl1.Text = oldAmount;
} else {
 lbl1.Text = newAmount;
}

答案 2 :(得分:0)

您可以从后面的代码中声明的属性中读取;这会满足你想要的吗?

而不是string temp = ...,您可以使用this.MyProperty.Contains("X") ...

答案 3 :(得分:-1)

<a href="javascript:onclick= window.location = 'RenewalPaymentGateway.aspx?RPID=<%# Eval("RPID")%>'" title="Pay">
 <asp:Label ID="TEMP" Text='<%# If(Eval("PaymentStatus").ToString() = "Paid", "View", "Make payment") %>'  runat="server" />

here in label the text view will appear when PaymentStatus=paid or the text will be make payment