Как запустить оператор if в aspx? - PullRequest
2 голосов
/ 15 октября 2010

Я хотел бы запустить оператор 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 ]

4 голосов
/ 15 октября 2010

Создайте метод на стороне c #, который сделает это за вас: чем использовать один из 2 способов:

  • Если вы имеете дело с хорошо известным объектом (например, когда 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 голос
/ 15 октября 2010

Я знаю, что это не полностью отвечает на ваш вопрос, но почему бы просто не сделать это в коде?Я предполагаю, что вы что-то делаете с 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;
}
0 голосов
/ 31 мая 2017
<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
0 голосов
/ 15 октября 2010

Вы можете прочитать из свойства, которое объявлено в коде позади;это удовлетворяет тому, что вы хотите?

Вместо string temp = ... вы можете использовать this.MyProperty.Contains("X") ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...