Accordian extender и события javascript в шаблоне содержимого - PullRequest
0 голосов
/ 30 марта 2011

Для быстрого доступа к коду ниже приведена разметка asp.net для аккордеона, который содержит заголовок темы в качестве заголовка для каждой панели и содержимое которого является комментариями для модерации.

 <ajaxToolkit:Accordion runat="server" id="accCommentTrash" fadetransitions="true"
                                    selectedindex="-1" requireopenedpane="false" autosize="None" headercssclass="accTitle"
                                    headerselectedcssclass="accSelectedTitle">
                                    <HeaderTemplate>
                                        <h4>
                                            Title:(<%# ((System.Data.DataRowView)Container.DataItem)["Title"]%>)</h4>
                                    </HeaderTemplate>
                                    <ContentTemplate>
                                        <asp:Repeater runat="server" id="rptrComments" datasource='<%# ((System.Data.DataRowView)Container.DataItem).CreateChildView("CommentRelation") %>'>
                                            <HeaderTemplate>
                                                <ul class="comment_trash">
                                            </HeaderTemplate>
                                            <ItemTemplate>
                                                <li id='<%#  new Utilities().encrypt(((System.Data.DataRowView)Container.DataItem)["CommentId"].ToString()) %>'
                                                    name='<%# new Utilities().encrypt(((System.Data.DataRowView)Container.DataItem)["CommentId"].ToString()) %>'>
                                                    <asp:Label id="lblCommentor" runat="server" text='<%# ((System.Data.DataRowView)Container.DataItem)["AuthorName"] %>'
                                                        cssclass=""></asp:Label>
                                                    <span>Commented on </span><a href='?id=<%# new Utilities().encrypt(((System.Data.DataRowView)Container.DataItem)["BoardId"].ToString())%>'
                                                        title="Click to view board" class="">
                                                        <%# ((System.Data.DataRowView)Container.DataItem)["Title"] %>
                                                    </a>
                                                    <p>
                                                        <asp:Label runat="server" id="lblComment" text='<%# ((System.Data.DataRowView)Container.DataItem)["Comment"] %>'
                                                            cssclass=""></asp:Label>
                                                    </p>
                                                    <p>
                                                        Trashed about
                                                        <%# GetTimeSpan(DateTime.Now,((System.Data.DataRowView)Container.DataItem)["ModifiedOn"].ToString()) %>
                                                        hours ago, Commented on
                                                        <%# DateTime.Parse(((System.Data.DataRowView)Container.DataItem)["CreatedOn"].ToString()).ToLongDateString() %>
                                                    </p>
                                                </li>
                                            </ItemTemplate>
                                            <FooterTemplate>
                                                </ul>
                                            </FooterTemplate>
                                        </asp:Repeater>
                                    </ContentTemplate>
                                </ajaxToolkit:Accordion>

и ниже:событие javascript, которое я прикрепляю к элементам списка, которые показывают комментарии для модерации.Только то, что события щелчка на них больше не работают, только наведение и наведение мышки.

   //comment restore
        if ($get("<%= accCommentTrash.ClientID%>")) {
            var li = $get("<%= accCommentTrash.ClientID%>").getElementsByTagName("li");
            console.log(li);
            for (iloopCounter = 0; iloopCounter < li.length; iloopCounter++) {
                $addHandlers(li[iloopCounter], {
                    mouseover: ul_li_hover,
                    mouseout: ul_li_hover
                });
                $addHandler(li[iloopCounter],"click",restoreComment);
            }
        }

ниже приведена функция восстановления комментария,

function restoreComment(evnt){
console.log(this.name);
console.log(this.id);
}

Теперь, что я делаю не так, здесь,Firebug показывает мне список событий, но события не срабатывают: (

1 Ответ

0 голосов
/ 05 июня 2011

Это было связано с тем, что Accordian предотвратил событие, вызвав event.preventDefault при возникновении метода. Я изменил управление на повторитель и решил его

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...