4

いくつかのカスケード ドロップダウンと送信ボタンを備えた Web フォームがありました。送信ボタンをクリックすると、データベースからデータを取得しています。Webフォーム全体がボタンを含む更新パネルにあります。

つまり、Webフォームに更新の進行状況を表示しようとしています。私はそれを行うことができますが、とにかくそれを隠すことはできませんでした. そこで、その Update Progress を a に入れて、jquery を使用して div を非表示にしようとしました。

最初のロード中に div を非表示にすることに少し成功しましたが、後でドロップダウンでいくつかの選択を行い、再度データを送信すると、更新の進行状況が表示されません。つまり、最初はページとクリックイベントの最初の読み込み中に、更新の進行状況が表示されて非表示になります.しかし、カスケードドロップダウンでいくつかの選択を行った後、ページは部分的にポストバックされ、更新の進行状況は表示されませんもう一度もう一度クリックするか、その他。

ページの新規ロードとは別に、他のシナリオでは部分ポストバックが発生します。そのため、部分ポストバック シナリオでは更新の進行状況が表示されません。

注:- Web フォームは、マスター ページのコンテンツ ページです...

ここにjqueryとコードを投稿しています。私が間違っているところを見て、正しいことを提案してください。

<script type="text/javascript" src="http://code.jquery.com/jquery-1.8.2.js"></script>

    <script type="text/javascript">
        $(function() {
            setTimeout(function() { $("#Progress").fadeOut(1500); }, 6000)
            $('#btnSearch').click(function() {
                $('#Progress').show();
                setTimeout(function() { $("#Progress").fadeOut(1500); }, 6000)
            })
        })
    </script>
<asp:UpdatePanel ID="updatepanel1" runat="server">
        <ContentTemplate>
            <h2 style="text-decoration: underline; font-family: 'Courier New'; text-align: center;"
                align="center">
                Plantation KML File</h2>
            <asp:Panel ID="pnlloc" runat="server" BorderColor="#365672" BorderStyle="Double"
                Height="150px" HorizontalAlign="Center" BackColor="LightSteelBlue" Width="85%">
                <br />
                <table align="center" class="style1" style="height: 116px; width: 94%">
                    <tr>
                        <td class="style68">
                            <asp:Label ID="lblCircle" runat="server" Text="Circle"></asp:Label>
                        </td>
                        <td class="style115">
                            &nbsp;
                        </td>
                        <td class="style23">
                            <asp:DropDownList ID="ddCircle" runat="server" Width="150px">
                            </asp:DropDownList>
                            <asp:CascadingDropDown ID="ddCircle_CascadingDropDown" runat="server" BehaviorID="circleajax"
                                Category="Circle" Enabled="True" LoadingText="Loading Circles" PromptText="Select a Circle"
                                ServiceMethod="GetWLTRSFCircles" ServicePath="~/Common/WebService/GetMasters.asmx"
                                TargetControlID="ddCircle">
                            </asp:CascadingDropDown>
                        </td>
                        <td class="style23">
                            &nbsp;
                        </td>
                        <td class="style67">
                            <asp:Label ID="lblDivision" runat="server" Text="Division"></asp:Label>
                        </td>
                        <td class="style116">
                            &nbsp;
                        </td>
                        <td class="style110">
                            <asp:DropDownList ID="ddDivision" runat="server" Width="150px">
                            </asp:DropDownList>
                            <asp:CascadingDropDown ID="ddDivision_CascadingDropDown" runat="server" BehaviorID="divisionajax"
                                Category="Division" Enabled="True" LoadingText="Loading Divisions" ParentControlID="ddCircle"
                                PromptText="Select a Division" ServiceMethod="GetDivision" ServicePath="~/Common/WebService/GetMasters.asmx"
                                TargetControlID="ddDivision">
                            </asp:CascadingDropDown>
                        </td>
                        <td class="style110">
                            &nbsp;
                        </td>
                        <td class="style38">
                            <asp:Label ID="lblRange" runat="server" Text="Range"></asp:Label>
                        </td>
                        <td class="style117">
                            &nbsp;
                        </td>
                        <td class="style98">
                            <asp:DropDownList ID="ddRange" runat="server" Width="150px">
                            </asp:DropDownList>
                            <asp:CascadingDropDown ID="ddRange_CascadingDropDown" runat="server" BehaviorID="rangeajax"
                                Category="Range" Enabled="True" LoadingText="Loading Range " ParentControlID="ddDivision"
                                PromptText="Select a Range" ServiceMethod="GetRange" ServicePath="~/Common/WebService/GetMasters.asmx"
                                TargetControlID="ddRange">
                            </asp:CascadingDropDown>
                        </td>
                    </tr>
                    <tr>
                        <td class="style68">
                            <asp:Label ID="lblSection" runat="server" Text="Section"></asp:Label>
                        </td>
                        <td class="style115">
                            &nbsp;
                        </td>
                        <td class="style23">
                            <asp:DropDownList ID="ddSection" runat="server" Width="150px">
                            </asp:DropDownList>
                            <asp:CascadingDropDown ID="ddSection_CascadingDropDown" runat="server" Category="Section"
                                Enabled="True" LoadingText="Loading Sections" ParentControlID="ddRange" PromptText="Select Section"
                                ServiceMethod="GetSection" ServicePath="~/Common/WebService/GetMasters.asmx"
                                TargetControlID="ddSection">
                            </asp:CascadingDropDown>
                        </td>
                        <td class="style23">
                            &nbsp;
                        </td>
                        <td class="style67">
                            <asp:Label ID="lblBeat" runat="server" Text="Beat"></asp:Label>
                        </td>
                        <td class="style116">
                            &nbsp;
                        </td>
                        <td class="style110">
                            <asp:DropDownList ID="ddBeat" runat="server" Width="150px">
                            </asp:DropDownList>
                            <asp:CascadingDropDown ID="ddBeat_CascadingDropDown" runat="server" Category="Beat"
                                Enabled="True" LoadingText="Loading Beats" ParentControlID="ddSection" PromptText="Select Beat"
                                ServiceMethod="GetBeat" ServicePath="~/Common/WebService/GetMasters.asmx" TargetControlID="ddBeat">
                            </asp:CascadingDropDown>
                        </td>
                        <td class="style110">
                            &nbsp;
                        </td>
                        <td class="style38">
                            &nbsp;
                        </td>
                        <td class="style117">
                            &nbsp;
                        </td>
                        <td class="style98">
                            &nbsp;
                        </td>
                    </tr>
                    <tr>
                        <td class="style68">
                            <asp:Label ID="lblYear" runat="server" Text="Year"></asp:Label>
                        </td>
                        <td class="style115">
                            &nbsp;
                        </td>
                        <td class="style23">
                            <asp:DropDownList ID="ddPlntYear" runat="server" Width="150px">
                                <asp:ListItem Value="0">Select Year</asp:ListItem>
                                <asp:ListItem>2015</asp:ListItem>
                            </asp:DropDownList>
                        </td>
                        <td class="style23">
                            &nbsp;
                        </td>
                        <td class="style67">
                            &nbsp;
                        </td>
                        <td class="style116">
                            &nbsp;
                        </td>
                        <td class="style110">
                            &nbsp;
                        </td>
                        <td class="style110">
                            &nbsp;
                        </td>
                        <td class="style38">
                            &nbsp;
                        </td>
                        <td class="style117">
                            &nbsp;
                        </td>
                        <td class="style98">
                            &nbsp;
                        </td>
                    </tr>
                </table>
                <br />
            </asp:Panel>
            <br />
            <div align="center">
                <asp:Button ID="btnSearch" runat="server" Height="32px" Text="Download" Width="106px"
                    BackColor="#365672" BorderStyle="Solid" BorderWidth="1px" Font-Bold="True" Font-Italic="True"
                    ForeColor="White" OnClick="btnSearch_Click1" />
            </div>
            <br />
            <asp:Label ID="lblMsg" runat="server"></asp:Label>
            <br />
        </ContentTemplate>
    </asp:UpdatePanel>
    <div id="Progress">
        <asp:UpdateProgress runat="server" ID="PageUpdateProgress" AssociatedUpdatePanelID="updatepanel1"
            DisplayAfter="3" DynamicLayout="False">
            <ProgressTemplate>
                <img alt="Generating KML File" src="Images/progressbar.gif" />
            </ProgressTemplate>
        </asp:UpdateProgress>
    </div>
4

4 に答える 4

3
<script type="text/javascript">
    var prm = Sys.WebForms.PageRequestManager.getInstance();
    prm.add_initializeRequest(InitializeRequest);

    function InitializeRequest(sender, args) {
        var updateProgress = $get('UpdateProgress1');
        var postBackElement = args.get_postBackElement();
        if (postBackElement.id == '<%= Button1.ClientID %>') {
            updateProgress.control._associatedUpdatePanelId = 'dummyId';
        }
        else{
            updateProgress.control._associatedUpdatePanelId = null;
        }
    }

</script>
于 2015-12-16T10:30:42.250 に答える
1

endRequest使用しているものと同様にコードを配置する必要があるUpdatePanelため、以下のコードを試してください。

<script type="text/javascript">
    $(function() {
        setTimeout(function() { $("#Progress").fadeOut(1500); }, 6000)
        $('#btnSearch').click(function() {
            $('#Progress').show();
            setTimeout(function() { $("#Progress").fadeOut(1500); }, 6000)
        })
    })

    var prm = Sys.WebForms.PageRequestManager.getInstance();
    prm.add_endRequest(function () {
        setTimeout(function() { $("#Progress").fadeOut(1500); }, 6000)
        $('#btnSearch').click(function() {
            $('#Progress').show();
            setTimeout(function() { $("#Progress").fadeOut(1500); }, 6000)
        })
    });
</script>
于 2015-11-05T05:43:36.503 に答える
1

このように JavaScript/jQuery で使用pageloadします

function pageLoad(sender, args) { 
            setTimeout(function () { $("#Progress").fadeOut(1500); }, 6000)
            $('#btnSearch').click(function() {
                $('#Progress').show();
                setTimeout(function () { $("#Progress").fadeOut(15000); }, 6000)
            })
        }
于 2015-11-03T13:25:25.947 に答える
1

jqueryコードを次のように変更します。

<script type="text/javascript">
        $(function() {
            setTimeout(function() { $("#Progress").fadeOut(1500); }, 6000)
            $(document).on("click",'#btnSearch', function() {
                $('#Progress').show();
                setTimeout(function() { $("#Progress").fadeOut(1500); }, 6000)
            })
        })
    </script>

ここではevent delegationテクニックを使用しています。パネルの更新により、あなたの古いhtmlものは新しいものによって更新されています。したがってevent listener、以前に取り付けられていたものは一掃されています。上記の手法を使用すると、listenerに接続され、それが利用可能な場合documentに委任されます#btnSearchhtml

于 2015-11-03T12:20:56.230 に答える