获取中继器控件ASP.Net中显示的单击项目文本框

Get the Clicked Item TextBox Displayed in Repeater Control ASP.Net

本文关键字:单击 项目 文本 显示 中继器 控件 ASP Net 获取      更新时间:2023-09-26

我需要实现讨论论坛,所以我目前使用的是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>

基本上,您需要向函数传递一个索引,并根据该索引值为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>