2011-09-27 57 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>