如何使用Eval

时间:2015-06-12 17:08:30

标签: c# asp.net

我有库存管理项目

我的 TransactionUpdate 表包含TransactionUpdatIdOrderNumberBalanceAmountOrderTotalAmtOrderType列, LastUpdateDate

现在在我的场景中,我正在使用转发器来加载数据。在转发器中,如果OrderTypeOpening Balance,则应输出客户的余额金额。如果OrderTypeSend Booking,则应将BalanceAmount扣除为BalanceAmount - OrderTotalAmt。我想使用 Eval

在转发器中写这个

我试过以下:

<%#(Eval("OrderType").ToString() == ("Opening Balance") ? "BalancAmount" :
                                       (Eval("OrderType").ToString() == "Send Booking") ?  Convert.ToDecimal(Eval("BalanceAmount")) - Convert.toDecimal(Eval("OrderTotalAmt")%>

但这表示:附近的语法错误。这是显而易见的,但我不知道在哪里放以及如何

2 个答案:

答案 0 :(得分:1)

如果从转发器内的ASPX页面进行函数调用后面的代码,则可以在该方法中使用Eval()方法。当语句像你的一样复杂时,这可以使代码更容易阅读。

请注意,我不确定我的逻辑是否正确,但您可以明白并清理它。

在转发器中:

  <%# BalanceCalc() %>

代码隐藏方法

    protected string BalanceCalc()
    {
        switch (Eval("OrderType").ToString())
        {
            case "Opening Balance":
                return "BalancAmount";
            case "Send Booking":
                return Convert.ToString(Eval("BalanceAmount"));
            default:
                return (Convert.ToDecimal(Eval("BalanceAmount")) - Convert.ToDecimal(Eval("OrderTotalAmt"))).ToString();
        }

    }

答案 1 :(得分:1)

在Notepad ++中查看,您遗漏了一些(,拼写错误,并且遗漏了else : 这是固定版本:

<%# (Eval("OrderType").ToString() == "Opening Balance") ? "BalancAmount" :
                                       ((Eval("OrderType").ToString() == "Send Booking") ?  (Convert.ToDecimal(Eval("BalanceAmount")) - Convert.ToDecimal(Eval("OrderTotalAmt"))) : "It's no SendBooking")%>