在这里研究之后:
Maintain Panel Scroll Position On Partial Postback ASP.NET
我添加了在回发时保持滚动位置的功能:
<div id="pagingPanelDiv">
<asp:ScriptManager ID="ScriptManager1" runat="server" ScriptMode="Release" />
<script type="text/javascript">
// It is important to place this JavaScript code after ScriptManager1
var xPos, yPos;
var prm = Sys.WebForms.PageRequestManager.getInstance();
function BeginRequestHandler(sender, args) {
if ($get('<%=pagingPanel.ClientID%>') != null) {
// Get X and Y positions of scrollbar before the partial postback
xPos = $get('<%=pagingPanel.ClientID%>').scrollLeft;
yPos = $get('<%=pagingPanel.ClientID%>').scrollTop;
}
}
function EndRequestHandler(sender, args) {
if ($get('<%=pagingPanel.ClientID%>') != null) {
// Set X and Y positions back to the scrollbar
// after partial postback
$get('<%=pagingPanel.ClientID%>').scrollLeft = xPos;
$get('<%=pagingPanel.ClientID%>').scrollTop = yPos;
}
}
prm.add_beginRequest(BeginRequestHandler);
prm.add_endRequest(EndRequestHandler);
</script>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Panel ID="pagingPanel" runat="server" Height="50px" Width="1175px" ScrollBars="Horizontal" Wrap="false"></asp:Panel>
</ContentTemplate>
</asp:UpdatePanel>
</div>
问题在于,现在按下按钮时不会发生回发,因此按钮不会像我想要的那样更新gridview。我该如何解决这个问题?
答案 0 :(得分:0)
为什么不使用内置的“MaintainScrollPositionOnPostback”作为@Page指令的一部分。
如果您将其设置为true,则应将Scrool位置保留在Postback上。
希望这有帮助。
答案 1 :(得分:0)
您是否检查过浏览器的控制台调试?我使用相同的解决方案,当我点击位于gridview行的更新面板内的按钮时,我看到下面的错误,没有更多的事情发生(它没有回帖):
POST http://localhost:37158/Issues/ScheduledNotes.aspx 500 (Internal Server Error) ScriptResource.axd?d=Xrr7TH9urSaaTnw8W2o5y8u0hPDzkm3GN-PAUDkj7QXbj4srXDMFfsYEcxq9JlkF8RMkpxmbT6sI3n…:6066
Uncaught Sys.WebForms.PageRequestManagerServerErrorException: Sys.WebForms.PageRequestManagerServerErrorException: An unknown error occurred while processing the request on the server. The status code returned from the server was: 500 ScriptResource.axd?d=Xrr7TH9urSaaTnw8W2o5y8u0hPDzkm3GN-PAUDkj7QXbj4srXDMFfsYEcxq9JlkF8RMkpxmbT6sI3n…:237
该错误仅与更新面板有关,而且与整个解决方案无关,因为我尝试仅添加更新面板并显示相同的错误。