0

リピーターに表示されるクライアントのリストがあります。クリックするとクライアントの詳細を表示するDetails Buttonリピーターがあります。サンプルでは、​​'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 で表示する必要があります。トリガー イベントを 'popup' div に追加すると、コントロールが見つからないと表示される

助けて感謝!ありがとう!

4

1 に答える 1

0

次の 2 つのオプションのいずれかがあります。

1) このコードのコメントを外してEventName="RepDetails_ItemCommand"EventName="ItemCommand"

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

2) リピーターを<ContentTemplate>UpdatePanel の

于 2013-04-03T13:14:06.790 に答える