if语句中的数据绑定

时间:2011-09-27 13:50:56

标签: c# asp.net data-binding

在aspx页面中我有:

<asp:HyperLink ID="HyperLink" runat="server" style="cursor:pointer; text-decoration:none;" NavigateUrl='<%#String.Format("~/storefront.aspx?CatalogID={0}",Eval("CatalogID"))%>'>
<asp:Label id="lblCustItem" Runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "CustItem")%>' width="15%">
</asp:Label>
</asp:HyperLink>

现在我正在尝试:

<%if (Eval("Integration").ToString() == "Y")
{ %>
<asp:HyperLink ID="HyperLink1" runat="server" style="cursor:pointer; text-decoration:none;" NavigateUrl='<%#String.Format("~/integration/vendorframe.aspx?CatalogID={0}",Eval("CatalogID"))%>'>
<asp:Label id="CustItemlbl" Runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "CustItem")%>' width="15%">
</asp:Label>
</asp:HyperLink>
<%} %>

<%else
{ %>
<asp:HyperLink ID="HyperLink" runat="server" style="cursor:pointer; text-decoration:none;" NavigateUrl='<%#String.Format("~/storefront.aspx?CatalogID={0}",Eval("CatalogID"))%>'>
<asp:Label id="lblCustItem" Runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "CustItem")%>' width="15%">
</asp:Label>
</asp:HyperLink>
<%} %>

第二段代码中的页面错误。所以我的问题是,我做错了什么,是否有更好的方法来使用if语句,如条件if,但我确实需要运行一个新的string.format实例这就是为什么我认为这不是一个选项。

错误讯息: 数据绑定方法(如Eval(),XPath()和Bind())只能在数据绑定控件的上下文中使用。

2 个答案:

答案 0 :(得分:4)

一种解决方案是使用内联If:

Text='<%# (Eval("Integration").ToString() == "Y") ? DataBinder.Eval(Container.DataItem, "CustItem") : "" %>'

它不漂亮,但它可以完成工作。

答案 1 :(得分:0)

这对我有用。在Formview中。

    <div id="PermDiv" runat="server" visible='<%#(Eval("Permissions").Equals("Edit") ? true : false  ) %>'></div>