0

我有一个显示在中继器中的客户列表。我有一个Details Button中继器,它在单击时显示客户端的详细信息。对于 Sample 现在只添加了“ClientName”。*When i Click on 'Details' LinkButton in Repeater it Displays the Details of Selected Row. But, this causes FullPage Post Back! Which i want to Prevent. Just i want to Update the Panel which displays the Details when row is selected from Repeater*.

在 .aspx 页面中:

<script>
    function ShowPopUp() {
        var listItemsRegion = document.getElementById('popup');
        popup.style.display = "block";
    }
    function ClosePopup() {
        var listItemsRegion = document.getElementById('popup');
        popup.style.display = "none";
    }
</script>

<asp:Repeater ID="RepDetails" runat="server" OnItemCommand="RepDetails_ItemCommand">
            <HeaderTemplate>
                <table class="tabl">
                    <tr style="background-color: #808080; color: White">
                        <td class="lblCenter">
                            <asp:Label ID="Label4" runat="server" Text="City" Font-Bold="true" CssClass="lbl"></asp:Label>
                        </td>
                        <td class="lblCenter">
                            <asp:Label ID="Label3" runat="server" Text="Age" Font-Bold="true" CssClass="lbl"></asp:Label>
                        </td>
                       <td class="lblCenter">
                            <asp:Label ID="Label1" runat="server" Text="Gender" Font-Bold="true" CssClass="lbl"></asp:Label>
                        </td>
                         <td class="lblCenter">
                            <asp:Label ID="Label5" runat="server" Text="Details" Font-Bold="true" CssClass="lbl"></asp:Label>
                        </td>
                    </tr>
            </HeaderTemplate>
            <ItemTemplate>
                <tr class="<%# Container.ItemIndex % 2 == 0 ? "rowEven" : "rowOdd" %>">
                    <td class="lblCenter">
                        <asp:Label ID="lblCity" runat="server" Text='<%#Eval("City") %>' /></td>
                     <td class="lblCenter">
                        <asp:Label ID="lblAge" runat="server" Text='<%#Eval("Age") %>' /></td>

                    <td class="lblCenter">
                            <asp:Label ID="lblGen" runat="server" Text='<%#Eval("Gender") %>' CssClass="lbl"></asp:Label>
                        </td>
                    <td class="lblCenter">
                     <asp:LinkButton ID="lblDetails" runat="server" CommandName="Display"
                           CommandArgument='<%#Eval("ID") %>'>Details</asp:LinkButton></td>
                    <asp:Label ID="rlblClientname" runat="server" Text='<%#Eval("Client") %>' Visible="false"></asp:Label>
                  </tr>

            </ItemTemplate>
            <FooterTemplate>
                </table>
            </FooterTemplate>
</asp:Repeater>

<div id="popup" style="display: none">
    <asp:UpdatePanel ID="UpdatePanel6" runat="server">
        <ContentTemplate>
    <table width="80%" align="center">
        <tr>
            <td>&nbsp;</td>
            <td width="30%">&nbsp;</td>
            <td>&nbsp;</td>
        </tr>
        <tr>
            <td>&nbsp;</td>
            <td>
                <asp:Label ID="Label15" runat="server" CssClass="lbl" Text="Client Code"></asp:Label>
            </td>
            <td>
                <asp:Label ID="lblClientName" runat="server" CssClass="lbl"></asp:Label>
            </td>
        </tr>
       <tr>
            <td>&nbsp;</td>
                    <td>&nbsp;</td>
            <td>
                <input id="Button2" type="button" value="Close" onclick="ClosePopup();" class="but" />&nbsp;</td>
        </tr>
    </table>
        </ContentTemplate>
    <%-- <Triggers>
            <asp:AsyncPostBackTrigger ControlID="RepDetails" EventName="RepDetails_ItemCommand" />
        </Triggers>--%>
 </asp:UpdatePanel>
</div>

在中继器项目命令中:

protected void RepDetails_ItemCommand(object source, RepeaterCommandEventArgs e)
        {
            if (e.CommandName == "Display")
            {
                LinkButton lblDetails = (LinkButton)e.Item.FindControl("lblDetails");
        Label rlblClientname = (Label)e.Item.FindControl("rlblClientname");
        if (lblDetails != null && e.CommandArgument != null)
                {
                    string val = e.CommandArgument.ToString();
             if (rlblClientname != null && rlblClientname.Text != string.Empty)
                    {
                        lblClientName.Text = rlblClientname.Text;
                    }
            string scrpt = "ShowPopUp();";
            Page.ClientScript.RegisterStartupScript(this.GetType(), "s", scrpt, true);
        }
        }
    }

这会导致我想要阻止的整页回发。在重复器行的单击上,必须使用 AsynPostBack 显示详细信息。将触发事件添加到“弹出”div 时,它说找不到控件

帮助赞赏!谢谢!

4

1 回答 1

0

You have one of two Options:

1) Uncomment this code and change EventName="RepDetails_ItemCommand" to EventName="ItemCommand"

    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="RepDetails" EventName="ItemCommand" />
    </Triggers>

2) Put the Repeater in the <ContentTemplate> of the UpdatePanel

于 2013-04-03T13:14:06.790 回答