0

我需要实现论坛,所以我目前正在使用 asp.net 转发器控件。我有一个文本框,用于为每个转发器项目添加回复。目前我正在使用 java 脚本和样式。

首次加载时,回复面板将不可见,如果单击依赖链接按钮,它应该只显示单击的项目文本框面板。目前它只显示转发器的第一项,即使点击了任何回复按钮?

这有什么问题,或者我如何获得我在转发器中单击的确切项目 ID?

    <div id="ViewDiscussion_Panel" runat="server" style="width: 100%; float: left;">
            <asp:Repeater ID="rptDiscussionFolders" runat="server" OnItemCommand="rptDiscussionFolders_ItemCommand" >
   <ItemTemplate>

     <div id="ContentArea" style="float: left; width: 92%; min-height: 80px; height: auto; margin-left: 10px; margin-bottom: 10px;"> 

        <div id="EditReplyItemArea" class="EditReplyItemArea" runat="server" style="margin: 15px 10px 10px 0px">
                                    <asp:TextBox ID="txtCommentItemReply" runat="server" Style="width: 98.8%; height: 1.5em; border: 1px solid gray" title="Add a reply" data-bind="value: text1, valueUpdate: 'keyup'"></asp:TextBox>
                                    <div style="float: right;">
                                        <asp:Button ID="ItemReplySubmit" data-bind="enable: isFormValid" runat="server" Text="Reply" OnClick="ItemReplySubmit_Click" CommandArgument='<%# Eval("ParentFolderID")%>' BackColor="DarkBlue" ForeColor="White" />
                                    </div>
                                     <div style="float: right;">
                                        <asp:Button ID="ItemReplyEdit" data-bind="enable: isFormValid" runat="server" Text="Edit" OnClick="ItemReplyEdit_Click" CommandArgument='<%# Eval("ListID")%>' BackColor="DarkBlue" ForeColor="White" />
                                    </div>
                                </div>

    </div>

 </ItemTemplate>
            </asp:Repeater>
        </div>

脚本...

 function EnbaleReplyPanel() {
        $("#ContentArea").addClass("showDivs");
        return false;
    }

风格...

<style type="text/css">
#ContentArea .EditReplyItemArea
{
    display: none;
}
#ContentArea.showDivs .EditReplyItemArea
{
    display: block;
}
</style>
4

1 回答 1

1

基本上,您需要将索引传递给函数,并根据该索引值为您的 div 提供一个唯一 ID...

所以变化如下:

div 唯一名称:

 <div class="CArea" id="ContentArea_<%# Container.ItemIndex + 1 %>" style="float: left;


function EnbaleReplyPanel(indx) {
    $("#ContentArea_" + indx).toggleClass("showDivs");
    return false;
}

我不确定你从哪里调用 EnbaleReplyPanel,但你需要从那里传递同样的东西,所以它将是:

EnbaleReplyPanel(<%# Container.ItemIndex + 1 %>);

对于 css 类名称,将是:

<style type="text/css">
.CArea .EditReplyItemArea
{
display: none;
}
.CArea .showDivs .EditReplyItemArea
{
    display: block;
}
</style>
于 2016-05-08T09:35:23.387 回答