【问题标题】:skip a line/item in asp:repeater在 asp:repeater 中跳过一行/项目
【发布时间】:2019-10-07 17:51:04
【问题描述】:

有没有可能跳过asp:repeater 中的项目?我有 <ul><li>s 我需要 ul 只重复一次。因为它有 id 并且 id 必须是唯一的。

这里我需要跳过重复<ul id="lightgallery"> 然后继续重复<li> 标签。

<asp:Repeater ID="rptBlogs" runat="server">
  <ItemTemplate>
      <div class="blog-post">
              <div style="display:none;" id="video<%# Eval("ID") %>">
                  <video class="lg-video-object lg-html5" controls preload="none">
                      <source src="<%# !Eval("ArticleTypeValue").ParseString()%>" type="video/mp4">
                          Your browser does not support HTML5 video.
                  </video>
              </div>
              <div class="post-left-img">
                  <ul id="lightgallery"> //this needs to be skipped 
                      <li class="video" style="position: relative;" data-poster="/<%# Eval("ThumbImage").ParseString() %>" data-sub-html="<%# Eval("Description") %>" data-html="#video<%# Eval("ID") %>" >
                          <a href="javascript:void(0)">
                          <img class="img-responsive" src="/<%# Eval("ThumbImage").ParseString() %>" />
                              <div class="demo-gallery-poster">
                                  <img src="/assets/images/play-button.png">
                              </div>
                          </a>
                      </li>
                  </ul>
              </div>
  </ItemTemplate>
</asp:Repeater>

我知道结构应该在哪里:

<ul>
<asp:repeater>
...
</asp:repeter>
</ul>

但由于 HTML 结构,这无法做到。

已解决,但仍对更好的想法持开放态度。请参阅下面的解决方案。

【问题讨论】:

  • 如果你不想,你不必渲染任何标记。您可以在 ItemTemplate 中添加条件逻辑来检查项目以确定是否应该呈现它。您可以查看this answer 以了解如何在您的 Web 表单标记中执行 if 语句。
  • @mason 我想过,但如果我想让它只显示一次,情况会怎样。
  • 听起来你的 UL 根本不应该在中继器中。
  • 我知道理想的是
    但由于 html 结构是不可能的
  • 您可以添加一个变量来跟踪它是否已经被添加。但这看起来您只是在避免问题,而不是适当地花时间来组织您的标记。

标签: asp.net asprepeater lightgallery


【解决方案1】:

我用过:

<ul id="lightgallery<%# Eval("ID") %>">

代替:

<ul id="lightgallery">

然后使用的jquery以选择器开头:

$('[id^=lightgallery]')

【讨论】:

  • 那么你的页面上会有多个 UL。如果这是故意的,那就太好了。
  • 谢谢。最好没有它们,但现在我会继续这样做,直到找到更好的方法
  • 我向您展示了如何在标记中执行 if 语句。您可以使用if (!markupAlreadyAdded) { /* add markup and set markupAlreadyAdded to true */ } 之类的逻辑来做到这一点。不过,我认为重组你的 HTML 会更干净。
【解决方案2】:

我认为中继器中的中继器可能让您获得您正在寻找的内容,您可能需要调整您正在绑定的数据。

看看这个答案 Repeater in Repeater

如果这不起作用,那么您可以添加一个 OnDataItemBound(类似于链接中显示的内容)以在服务器端查找/删除您的控件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-13
    • 1970-01-01
    相关资源
    最近更新 更多