【问题标题】:How to hide/show inside a repeater?如何在中继器内隐藏/显示?
【发布时间】:2018-03-20 23:30:29
【问题描述】:

我试图在锚点点击时隐藏/显示div,但这不起作用。

我有转发器,里面有很多帖子。有绑定的图片、描述和cmets(锚标签)。

当我点击评论时,将显示关联的div

<a href="#" onclick="$('#<%= divSearch.ClientID%>').toggle('medium');return false;">Show Search</a>
<div class="widget-content" id="divSearch" runat="server" style="display: none; background-color: #EEEEEE;">Content goes here</div>

它在中继器项目模板之外完美地工作,但是当我将它放在中继器内时,它就不起作用了

【问题讨论】:

  • 错误是什么?
  • 当我放置在 itemtemplate 中时,它显示“当前内容中不存在 div 搜索”。我知道它 id 相关的错误,但可以解决它
  • 如果您提供一个工作代码 sn-p 重现所描述的问题,它会更容易提供帮助。
  • 我也试过了,但在 sn-p 中显示不支持 jquery 版本。
  • 如果有人有像 facebook 这样的评论例子,那么建议我。

标签: javascript c# jquery asp.net


【解决方案1】:

给出的其他 2 个答案忘记了在中继器中有多个 divSearch,因此您无法在 aspx 中直接访问它们。为此,您需要使用 FindControl,这可以内联完成。您必须在 Container 中找到 Panel 并获取该 ClientID。

<asp:Repeater ID="Repeater1" runat="server">
    <ItemTemplate>

        <asp:Panel ID="divSearch" runat="server" style="display:none">
            <%# Eval("value") %>
        </asp:Panel>

        <a href="#" onclick="$('#<%# Container.FindControl("divSearch").ClientID %>').toggle('medium');return false;">Show</a>

    </ItemTemplate>
</asp:Repeater>

【讨论】:

  • 非常感谢...!!使用这个解决了问题。
  • Hello..@VDWWD 在 divSearch 我放置了一个文本框和按钮,用于对哪个事件以及如何使用它发表评论?
  • 最简单的方法是使用ItemCommand事件:forums.asp.net/t/…
【解决方案2】:

我认为最简洁的实现方式是在 ItemDataBound 事件中。

标记

<a href="#" runat="server" id="showSearch">Show Search</a>
<div class="widget-content" id="divSearch" runat="server" style="display: none; background-color: #EEEEEE;">Content goes here</div>

事件

protected void repeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {
        var link = e.Item.FindControl("showSearch") as HtmlControl;
        link.Attributes["onclick"] = $"$('{e.Item.FindControl("divSearch").ClientID}').toggle('medium'); return false;";
    }
}

【讨论】:

  • 现在@LoveAajkal 怎么样?
【解决方案3】:

在模板控件内部,需要使用&lt;%#,而不是&lt;%=

<a href="#" onclick="$('#<%#Container.FindControl("divSearch").ClientID%>').toggle('medium');return false;">Show Search</a>

【讨论】:

  • 是的,就像 VDWWD 说的,我忘了在 Container 中搜索。但是,您不需要像他说的那样将您的div 转换为面板。它将与div 一起使用。请参阅我的更新答案。但是面板将呈现为div,因此它们最终是相同的。
猜你喜欢
  • 2023-03-29
  • 1970-01-01
  • 1970-01-01
  • 2017-05-01
  • 2014-09-22
  • 2017-03-31
  • 1970-01-01
  • 1970-01-01
  • 2023-03-20
相关资源
最近更新 更多