【问题标题】:Don't render HTML element, if DataBinder.Eval(Container.DataItem, "someValue") == 0如果 DataBinder.Eval(Container.DataItem, "someValue") == 0,则不呈现 HTML 元素
【发布时间】:2013-11-22 12:43:45
【问题描述】:

我有一个<asp:repeater>,在里面我正在渲染一个有几行的表格。 每行 - 对应一个不同的值。

问题:如果该值为空,如何“跳过”该行?

这是评估声明:

<%# DataBinder.Eval(Container.DataItem, "Website") == ""? "" : /*render element*/ %>

这是我想在case语句中呈现的元素,如果为假:

<tr>
    <td><span>Website address:</span></td>
    <td>
        <p><a href="<%#DataBinder.Eval(Container.DataItem, "Website") %>" class="red-link"><%#DataBinder.Eval(Container.DataItem, "Website") %></a></p>
    </td>
</tr>

【问题讨论】:

    标签: asp.net asprepeater


    【解决方案1】:

    试试这个:

    <asp:Repeater runat="server" id="myRepeater">
        <ItemTemplate>
            <tr runat="server" 
               visible='<%#String.Format("{0}",DataBinder.Eval(Container.DataItem, "Website"))!="" %>'>
                <td><span>Website address:</span></td>
                <td>
                    <p><a href='<%#DataBinder.Eval(Container.DataItem, "Website") %>" 
                        class="red-link'><%#DataBinder.Eval(Container.DataItem, "Website") %></a></p>
                </td>
            </tr>
        </ItemTemplate>
    </asp:Repeater>
    

    Website 为空或null 时,它会将行的visible 属性设置为false

    【讨论】:

    • 这会为“
    • 控件的数据源是什么?
    • Datasource 是对象列表。这个中继器完美无缺,但我唯一需要的是 - 如果它的值为“空”,则不为某些项目属性呈现表格行
    • 我不知道为什么,但这突然开始正常工作,就像你提议的那样。但这对我来说仍然是个谜,为什么它在之前的 2-3 次复制/粘贴中不起作用
    • 除非你被 ASP.NET 1.0 卡住了,否则你可以将 string.Format("{0}", DataBinder.Eval(Container.DataItem, "Website")) 替换为:Eval("Website", "{0}"),这样可以达到同样的效果。
    猜你喜欢
    相关资源
    最近更新 更多
    热门标签