使用asp.net和母版页在ListView中的回发上保持滚动位置 - javascript

在ASP.NET中回发后,有许多类似的文章可以保持滚动位置。我尝试了其中的几种方法都没有成功,但是,很多人似乎都成功使用了以下Javascript。我也尝试过使用.scrollLeft和.offsetLeft,但也没有任何运气。

var xPos, yPos;
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_beginRequest(BeginRequestHandler);
prm.add_endRequest(EndRequestHandler);

function BeginRequestHandler(sender, args) {
    alert("Begin Request?");
    if ($get('<%=PanelReportInput.ClientID%>') != null) {
        xPos = $get('<%=PanelReportInput.ClientID%>').offsetLeft;
        yPos = $get('<%=PanelReportInput.ClientID%>').scrollTop;
    }
}

function EndRequestHandler(sender, args) {
    alert("End Request?");
    if ($get('<%=PanelReportInput.ClientID%>') != null) {
        $get('<%=PanelReportInput.ClientID%>').offsetLeft = xPos;
        $get('<%=PanelReportInput.ClientID%>').scrollTop = yPos;
    }
}

我在名为ScrollPosition.js的文件中包含上面的javascript,该文件被拉到下面的我的母版页中。我会收到两个警报,但是在调试此代码时,xPos和yPos的值都为'undefined'。以下是我的.aspx页面,但是在上面的JavaScript代码中,我也尝试过使用''以及''和''。

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="DailyOrderSchedule.aspx.cs" MasterPageFile="~/MasterPages/Main.Master"
Inherits="OfficeIntranet.Forms.Warehouse.DailyOrdersSchedule" MaintainScrollPositionOnPostback="true" %> 

<%@ Register TagPrefix="uc" TagName="DateStoreSelectoruc"    Src="../../Controls/Warehouse/DateStoreSelector.ascx" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
    <title>Order Schedule</title>
    <link href="../../Styles/StyleSheet.css" rel="stylesheet" type="text/css" />
    <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolderPageHeading" runat="server">
</asp:Content>
<asp:Content ID="Content3" ContentPlaceHolderID="ContentPlaceHolderBody"    runat="server">
    <div id="headerE" runat="server" style="text-align: center; width: auto;">
        <asp:Label ID="MainH" CssClass="headerText" runat="server">Order Schedule</asp:Label>
        <asp:Label ID="headVersion" CssClass="textarea" runat="server"></asp:Label>
    </div>
    <asp:UpdatePanel ID="UpdatePanelMain" runat="server">
        <ContentTemplate>
            <asp:Panel runat="server" ID="PanelReportInput" Width="980px" BorderColor="#CCCCCC" BorderStyle="Inset" BorderWidth="0px" Style="padding: 10px; text-align: center;">
                <asp:ListView ID="DailyStoreListView" runat="server" GroupItemCount="5" GroupPlaceholderID="GPH" style="width:940px"
                    ItemPlaceholderID="itemPlaceholder" OnItemDataBound="lv_ItemDataBound" >
                    <LayoutTemplate>
                        <div runat="server" style="padding: 2px; width: 932px; height:740px; overflow:scroll">
                            <div id="CalendarDays" style="padding: 2px">
                                <div class="SPAWeekFiller5">&nbsp;</div>
                                <div class="SPAWeekDays" style="margin-right: 2px">Friday</div>
                                <div class="SPAWeekFiller">&nbsp;</div>
                                <div class="SPAWeekDays">Thursday</div>
                                <div class="SPAWeekFiller">&nbsp;</div>
                                <div class="SPAWeekDays">Wednesday</div>
                                <div class="SPAWeekFiller">&nbsp;</div>
                                <div class="SPAWeekDays">Tuesday</div>
                                <div class="SPAWeekFiller">&nbsp;</div>
                                <div class="SPAWeekDays">Monday</div>
                                <div class="SPAWeekFiller">&nbsp;</div>
                                <div style="clear: both; padding: -1px;"></div>
                            </div>
                            <div id="groupPlaceholder" runat="server"></div>
                        </div>
                    </LayoutTemplate>
                    <GroupTemplate>
                        <div style="padding: 6px 0px 6px 6px; width: 910px;" id="GTdIV">
                            <div id="itemPlaceholder" runat="server"></div>
                            <div style="clear: both; padding: 4px;"></div>
                        </div>
                    </GroupTemplate>
                    <ItemTemplate >
                        <uc:DateStoreSelectoruc ID="DateStoreSelectorControl" runat="server" />
                    </ItemTemplate>
                    <EmptyItemTemplate>
                        <div style="padding: 5px; height: 220px; width: 170px; float: left;">
                        </div>
                    </EmptyItemTemplate>
                    <EmptyDataTemplate>
                        <div style="padding: 10px; background: #CACACA; width: 930px;">
                        No Records Found.
                        </div>
                    </EmptyDataTemplate>
                </asp:ListView>
            </asp:Panel>
        </ContentTemplate>
    </asp:UpdatePanel>
</asp:Content>

这是母版页

<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Main.master.cs" Inherits="OfficeIntranet.MasterPages.Main" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>My Page</title>
    <asp:ContentPlaceHolder ID="head" runat="server">
    </asp:ContentPlaceHolder>
</head>
<body>
    <form id="form1" runat="server">
        <asp:ScriptManager ID="scriptManager" runat="server" EnablePartialRendering="True" >
            <Scripts>
                <asp:ScriptReference Path="../Scripts/ScrollPosition.js" />
            </Scripts>
        </asp:ScriptManager>
    <asp:Panel ID="wrapperP" runat="server">
        <div id="art-page-background-simple-gradient"></div>
        <div id="art-page-background-glare">
            <div id="art-page-background-glare-image"></div>
    ...

如果有人对我在做什么错有任何想法,我将不胜感激任何帮助/建议!

参考方案

您的Javascript在单独的文件中?

在这种情况下,Javascript中形式为<%=something%>的标记将不会被所需的实际值替换。仅当您的Javascript是内联页面时才起作用。

这是因为<% %>标记在将网页发送到浏览器之前由Web服务器上的ASP.NET编译器解释。如您所知,标签将替换为实际的评估值。外部Javascript文件永远不会被Web服务器处理:当解释已处理的页面时,浏览器会将其拉入。

用symfony隐藏树枝中的表格行 - javascript

我正在开始编码。我正在使用Symfony 3.3我想用复选框隐藏(并显示)表上的a或某些特定行。我尝试使用javascript和jquery。我希望隐藏的行保持隐藏状态。我不知道该怎么做。这是我的树枝{% block body %} <div class="container"> <h3>List of produ…

表单不提交或按钮提交不起作用 - javascript

据我所知,此代码必须有效,但是我编码时却无效问题在于该表单未提交。我该如何解决?选中时,我什至没有得到复选框的值。<table id="example" class="display" cellspacing="0" width="100%"> <thead&g…

在PHP文件中调用javascript函数并在加载HTML文件之后? - javascript

我需要在我的php中调用js函数,但无法正常工作。有人可以告诉我我在做什么错吗?我该如何轻松地做到这一点?谢谢!我有三个文件:  mail.php负责发送$ _POST的内容(工作正常)。我调用我的javascript函数来切换模式,具体取决于邮件是否已发送。 <? ... $response = $sendgrid->send($email);…

将Web用户控件添加到页面时,asp按钮onclick不会触发 - javascript

我正在使用使用Visual Studio模板创建的Web表单应用程序。模板具有一个内容占位符,该占位符被访问的任何页面的内容替换。有问题的页面有几个服务器控件,例如文本框,标签和按钮。当我单击我的更新按钮时,它可以正常工作,这些值会回传并更新数据库。我想在所有子页面上创建通用的登录提示。我的导航栏(位于我的母版页中)具有引导程序设置。我在导航栏中添加了一个下…

Telerik单选按钮所需的字段验证器 - javascript

如何设置Telerik单选按钮所需的字段验证器?我想在按钮单击“ BtnSave”上设置必填字段验证器吗?请帮忙!<telerik:RadButton ID="radio_male" runat="server" ToggleType="Radio" AutoPostBack="fa…