【问题标题】:Writing Code in MArkup在 MArkup 中编写代码
【发布时间】:2009-12-04 14:54:43
【问题描述】:

我在 gridview 中有一个带有标签的模板字段,我想根据 if 语句更改其文本。以下当然不起作用,但这是我想要完成的。

 <%if Eval("Address") != ""%>
    <%{ %>
         <ItemTemplate>
          <asp:Label ID="Label18" nowrap="nowrap" runat="server" Text='<%# Eval("Address") + "<br>" + Eval("City") + "," + Eval("State") + " " + Eval("Zip1") + " " + Eval("Zip2") %>'></asp:Label>
        </ItemTemplate>
  <%} %>

我怎样才能做到这一点?

【问题讨论】:

    标签: c# .net asp.net visual-studio


    【解决方案1】:

    这个呢?

    <ItemTemplate>
    <asp:Label ID="Label18" nowrap="nowrap" runat="server" Text='<%# Eval("Address") != String.Empty ? Eval("Address") + "<br>" + Eval("City") + "," + Eval("State") + " " + Eval("Zip1") + " " + Eval("Zip2") : String.Empty %>'></asp:Label>
    </ItemTemplate>
    

    【讨论】:

    • 我真的很喜欢这个主意。但它仍然通过代码。我试过 String.IsnullorEmpty 但这也没有用
    • 我从未见过这种方法 - 但是如果值为 null,我该如何使用它?
    • String.IsNullOrEmpty(Eval("Address"))
    【解决方案2】:

    您可以在您的数据源上拥有一个 DisplayAddress 属性 - 这是您想要的 Address 连接或 null/空白。

    不知道你是如何绑定你的网格的,我无法建议最好的方法。

    【讨论】:

      【解决方案3】:

      考虑在您的 itemTemplate 中使用占位符:

      <ItemTemplate>
         <asp:PlaceHolder ID="phAddress" runat="server" />
      </ItemTemplate>
      

      对于您的gridview,有一个OnRowDataBound 事件,您可以在其中构造一个新的asp:Label 或纯HTML。使用e.Row.DataItem 查找您需要的地址详细信息。

      然后您可以将该标签或 HTML 字符串分配给 phAddress

      This related answer may help.

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-12-22
        • 1970-01-01
        • 1970-01-01
        • 2016-03-08
        • 2022-01-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多