使用jquery的asp.net转发器

时间:2013-02-20 22:41:56

标签: jquery asp.net repeater

我有一个转发器,它直接从绑定到我的Outlook的应用程序中列出电子邮件。我需要转发器列出文件夹名称,然后列出该文件夹中的每条消息。但是,我得到的是为该文件夹中的每条消息重复的文件夹名称。

我还尝试使用jquery来切换文件夹名称以显示其下面的消息,但是当我使用style="display:none;"时,不会显示任何消息。我不认为我试图使用的jquery是对的。它被称为jsfiddle。

任何帮助将不胜感激,因为我正在画一个空白。我一直盯着这个太长时间,可能只是需要休息一下。

这是我的代码:

<script type="text/javascript">
    $(function () {
        $('a.toggler').on('click', function () {
            $('+ div', this).toggle();
        });
    });
</script>

<asp:Repeater runat="server" ID="ListServRepeater">
            <ItemTemplate>
                <div class="dataContentSection">
                    <a href="javascript:void(0);" class="folders toggler">
                        <h4>
                            <%# Eval("FolderName") %>
                        </h4>
                    </a>
                </div>
                <div class="dataContentSection">
                    <div>
                        <%# Eval("Message") %>
                    </div>
                </div>
            </ItemTemplate>
</asp:Repeater>
编辑:我嵌套了中继器,但我不能做正确的事情,因为所有的FolderNames仍然会显示每条消息。

<div runat="server">
    <ul>
        <asp:Repeater runat="server" ID="FolderRepeater">
            <ItemTemplate>
                <li class="dataContentSection">
                    <a href="javascript:void(0);" class="folders toggler">
                        <h4>
                            <%# Eval("FolderName") %>
                        </h4>
                    </a>
                </li>
                <asp:Repeater runat="server" ID="MessagesRepeater">
                    <ItemTemplate>
                        <li class="dataContentSection" >
                            <div id="messages">
                                <%# Eval("Message") %>
                            </div>
                        </li>
                    </ItemTemplate>
                </asp:Repeater>
            </ItemTemplate>
        </asp:Repeater>
    </ul>
</div>

更新:由于@rs提供了一篇文章来帮助我,我能够让中继器工作。如果你查看评论,文章应该仍然存在。我几乎一字不差地接受了它,取代了列名和其他与我的代码相关的内容。仍然看着jquery,无法弄清楚为什么它不起作用。我唯一能想到的是它是动态的,而不是静态的,我试图展示和隐藏的数据。

<div class="dataContentSection">
    <a href="javascript:void(0);" class="folders toggler">
        <h4>
           Folder Name
        </h4>
     </a>
 </div>
 <ul>
    <div class="dataContentSection">
        <div id="message">
          Message Text
        </div>
    </div>
 </ul>
 </div>

1 个答案:

答案 0 :(得分:3)

这个问题是一个两部分问题。关于每个文件夹下的消息的子转发器控制,rs是正确的。一旦通过.Net解决了这个问题,就可以解决显示/隐藏每个文件夹的jquery部分。

可以通过多种不同方式处理jquery部分。下面是一个示例代码,一旦准备好解决jquery部分,就可以引用它:

<script type="text/javascript">
    $(function () {
        $('a').click(function() {
            $(this).parent().children('.dataContentSectionMessages').toggle();
        });
    });
</script>

<div class="dataContentSection">
    <a href="javascript:void(0);" class="folders toggler">
        <h4>
            Folder 1
        </h4>
    </a>
    <div class="dataContentSectionMessages">
        <div id="message1a">
            Message 1a
        </div>
        <div id="message1b">
            Message 1b
        </div>
    </div>
</div>
<div class="dataContentSection">
    <a href="javascript:void(0);" class="folders toggler">
        <h4>
            Folder 2
        </h4>
    </a>
    <div class="dataContentSectionMessages">
        <div id="message2a">
            Message 2a
        </div>
    </div>
</div>

这是一个演示上述内容的jsfiddle:http://jsfiddle.net/4PPdz/