我有库存管理项目
我的 TransactionUpdate
表包含TransactionUpdatId
,OrderNumber
,BalanceAmount
,OrderTotalAmt
,OrderType
列, LastUpdateDate
现在在我的场景中,我正在使用转发器来加载数据。在转发器中,如果OrderType
为Opening Balance
,则应输出客户的余额金额。如果OrderType
为Send Booking
,则应将BalanceAmount扣除为BalanceAmount
- OrderTotalAmt
。我想使用 Eval
我试过以下:
<%#(Eval("OrderType").ToString() == ("Opening Balance") ? "BalancAmount" :
(Eval("OrderType").ToString() == "Send Booking") ? Convert.ToDecimal(Eval("BalanceAmount")) - Convert.toDecimal(Eval("OrderTotalAmt")%>
但这表示:
附近的语法错误。这是显而易见的,但我不知道在哪里放以及如何
答案 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")%>