c#
  • asp.net
  • detailsview
  • 2012-06-14 87 views 0 likes 
    0

    我是新來ASP.NET,我想弄清楚如果只顯示一個代碼塊的.aspx文件,如果一個值不爲空或空白。下面是我,一個DetailsView內:如何有條件地顯示/隱藏鏈接在DetailsView ItemTemplate

    <asp:TemplateField HeaderText="Phone"> 
        <EditItemTemplate> 
         <asp:TextBox runat="server" ID="txtPhone" Text='<%# Bind("Phone") %>'></asp:TextBox> 
        </EditItemTemplate> 
        <ItemTemplate> 
         <a href="tel:<%# Eval("Phone") %>"> 
          <i class="icon-phone"></i> 
          <%# Eval("Phone") %> 
         </a> 
        </ItemTemplate> 
    </asp:TemplateField> 
    

    我想有條件地隱藏整個a標籤如果Eval("Phone")爲空或空白。我寧願在標記中這樣做,而不是在代碼隱藏方面做一些事情。

    回答

    1

    David's answer我指出了正確的方向:

    <asp:HyperLink runat="server" NavigateUrl='tel:<%# Eval("Phone") %>' 
         Visible='<%# !string.IsNullOrWhiteSpace(Eval("Phone").ToString()) %>'> 
        <i class="icon-phone"></i> 
        <%# Eval("Phone") %> 
    </asp:HyperLink> 
    
    +0

    不錯。很高興我能幫忙,即使我的確切代碼不適合你。 – David

    0

    首先,將其更改爲ASP:超鏈接控件。 html A標籤沒有像ASP這樣的便捷Visible屬性:超鏈接控件。

    然後您可以聲明性地設置可見性。

    <asp:HyperLink runat="Server" NavigateUrl='tel:<%# Eval("Phone") %>' Text='<%# Bind("Phone") %>' Visible = '<%= DataBinder.Eval(Container.DataItem("phone").ToString().Trim() == "" %>' /> 
    
    +0

    我應該'Container'是什麼?是否應該存在一些現有的財產,還是應該用其他方法取代?我的'DetailsView'的''ID'是'dvOrg',但是嘗試做'dvOrg.DataItem(「Phone」)'有錯誤「需要方法,委託或事件」。 –

    +0

    只要你在像Repeater,FormView,DetailsView等數據綁定控件中,Container.DataItem就在那裏。文檔在這裏:http://msdn.microsoft.com/en-us/library/4hx47hfe.aspx – David

    +0

    'Container'似乎不存在,VS想從'System.ComponentModel'中將一些'Container'類導入到.aspx中。 –

    0

    恐怕你不能在eval語句中做條件。相反,只需用函數包裝簡單的eval,但爲了處理這種情況,我通常會添加一個名爲NullHandler()的方法。考慮下面的功能。

    protected string NullHandler()(object gridViewObject) 
        { 
         if (object.ReferenceEquals(gridViewObject, DBNull.Value)) 
         { 
          return "Empty"; 
         } 
         else 
         { 
          return gridViewObject.ToString(); 
         } 
        } 
    

    ,那麼你可以把像下面

    <asp:Label ID=」phoneLbl」 runat=」server」 Text=’<%# NullHandler(Eval(「Phone」)) %>’> 
    

    希望這有助於。

    +0

    我正在參考Eval而不是DataBinder.Eval() – MMK

    相關問題