2011-09-27 59 views
1

在一个aspx页面我有:数据绑定在if语句

<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()只能用于数据绑定控件的上下文中。

+0

“页面出错” - 您至少能提供错误和错误引发的位置吗? – David

+0

你如何从服务器端绑定数据?这个超链接放置在网格中吗? – Praveen

回答

4

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

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

它不漂亮,但它会完成这项工作。

+0

看到后,我尝试了类似的东西, 我认为它会起作用,但事实证明,我错了,它并没有看着正确的表来获得“整合” –

+0

那么,这是一个单独的问题,你还没有发布详情。如果这篇文章解决了最初的问题,请考虑将其标记为“已接受”,并在出现其他问题时创建一个单独的问题。 – qJake

+1

好的,我非常感谢你在这里提供的帮助 –

0

这对我有效。在Formview中。

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