在ItemTemplate中使用“if”

时间:2014-09-02 20:29:46

标签: c# asp.net data-binding

我正在编写一个重复付款迁移工具,用于从一个支付系统转移到另一个支付系统。所有用户'信用卡和银行信息存储在这些系统上,因此我需要用户重新输入信息,因为我没有将信息存储在我自己的数据库中。

用户可以更新其信息,也可以选择删除定期付款,而不是将其迁移到新系统。我的迁移数据对象包含名为UpdateAction的枚举,其值为DeleteUpdate

我正在撰写评论 - 您输入的页面,并且ListView控件带有显示所有信息的项目模板。当要删除操作时,没有其他信息要显示,所以我有:

<asp:ListView ID="lvReview" runat="server">
    <ItemTemplate>
        <table>
            <tr>
                <td colspan="2"><b><%# Eval("PaymentProfileName") %></b></td>
            </tr>
            <tr><td>Action</td><td><%# Eval("Action").ToString() %></td></tr>
<%  if ((UpdateAction)Eval("UpdateAction") == UpdateAction.Update) 
    { %>
        <!-- Update item bound content here -->
<%  } %>
        </table>
    </ItemTemplate>
</asp:ListView>

这不起作用,因为您必须使用<%# ... %>才能使用Eval(),在这种情况下,您无法使用if。有没有办法引用ascx文件本身绑定的数据项?或者我必须制作一堆文字控件并将if放在OnItemDataBound事件处理程序中?

1 个答案:

答案 0 :(得分:0)

我认为你在ItemDataBound事件的正确轨道上。将更新项目绑定内容放在可以设置其可见性的面板中......

UpdateAction action = DataBinder.Eval(e.Item.DataItem, "UpdateAction");
if (action == UpdateAction.Update)
{
    pnlUpdateItems.Visible = true;
}
else
{    
    pnlUpdateItems.Visible = false;
}