UpdatePanel最初不起作用,非常奇怪的修复

时间:2018-06-22 13:03:13

标签: .net updatepanel scriptmanager

我的页面上有一个UpdatePanel ...

HTML表单:

<form id="form1" runat="server">   

        <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true" ClientIDMode="Static" EnablePageMethods="True"></asp:ScriptManager>

        <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
            <ContentTemplate>

                <div class="main">
                    <div class="mainTop" id="pinboxContainer">

                        <asp:TextBox ID="pinbox" runat="server" Placeholder="Enter your PIN"></asp:TextBox>

                    </div>

                    <div class="mainMid" id="nameContainer">
                        <div id="nameBox">
                            <asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="False" DataSourceID="SqlDS">
                                <Fields>
                                    <asp:BoundField DataField="FirstLast" HeaderText="FirstLast" ShowHeader="False" SortExpression="FirstLast" />
                                </Fields>
                            </asp:DetailsView>
                        </div>
                    </div>

                    <div class="photoContainer">
                        <div class="photo">
                            <asp:GridView ID="GridPHOTO" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDS" OnRowDataBound="OnRowDataBound" BorderStyle="None" ShowHeader="False" GridLines="None" BorderColor="#66FF33" BorderWidth="1px">
                                <Columns>
                                    <asp:TemplateField HeaderText="Photo" ShowHeader="False" ControlStyle-BorderStyle="None">
                                        <ItemTemplate>
                                            <asp:Image ID="Image1" runat="server" BorderStyle="Solid" />
                                        </ItemTemplate>
                                        <ControlStyle BorderStyle="None" />
                                    </asp:TemplateField>
                                </Columns>
                                <EditRowStyle BorderStyle="None" />
                            </asp:GridView>
                        </div>
                    </div>

                </div>

            </ContentTemplate>
        </asp:UpdatePanel>

        <asp:SqlDataSource ID="SqlDS" runat="server" ConnectionString="<%$ ConnectionStrings:ValidateConnectionString %>" SelectCommand="SELECT [StuId], [FirstName], [LastName], [Alert], [Photo], [FirstLast] FROM [foodservice_SS18] WHERE ([PIN] = @PIN)">
            <SelectParameters>
                <asp:ControlParameter ControlID="pinbox" Name="PIN" PropertyName="Text" Type="String" />
            </SelectParameters>
        </asp:SqlDataSource>

        <script src="JS/JavaScript.js"></script>        

    </form>

我有一个小jQuery,它着重于页面加载时的密码盒以及通过UpdatePanel进行的部分页面更新...

JS

function setFocus() {

    alert('whole page refresh');

    setTimeout(function () {

        $('#pinbox').focus();

    }, 1000);

};

$(document).ready(setFocus);

var prm = Sys.WebForms.PageRequestManager.getInstance();

prm.add_endRequest(function () {

    alert('partial page refresh');

    $('#pinbox').focus();

});

DetailsViewGridView都从SELECT parameter中提取pinbox。在pinbox中输入PIN并且用户按Enter键后,DetailsViewGridView会为该用户返回一些数据。

这一切正常,但是问题在于UpdatePanel的行为:

页面加载>焦点设置在pinbox上>在密码框中输入PIN码>按Enter =刷新整个页面

页面将继续刷新整页,直到您执行此操作...

页面加载>焦点设置在pinbox上> 在密码箱之外的某个地方单击>在密码箱中单击返回>输入PIN码>按Enter =刷新部分页面

我不明白为什么页面会做整页刷新,直到从密码箱中单击出来,然后再将其单击回来。

如果我删除了jQuery并且未将焦点放在(document).ready上,那么我必须单击进入pinbox,它会刷新部分页面。

任何建议,不胜感激!

0 个答案:

没有答案