Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 加载gridview后滚动到页面末尾_Javascript_C#_Asp.net_Gridview_Scroll - Fatal编程技术网

Javascript 加载gridview后滚动到页面末尾

Javascript 加载gridview后滚动到页面末尾,javascript,c#,asp.net,gridview,scroll,Javascript,C#,Asp.net,Gridview,Scroll,在我的aspx页面的末尾有以下代码。当我单击下面的按钮时,usercontrol加载一个网格。问题是,当加载网格时,它超出了查看范围,用户必须滚动到botton才能查看显示的网格 <asp:UpdatePanel runat="server"> <ContentTemplate> <div style="border: thin; border-style: double"> <asp:Panel ID="

在我的aspx页面的末尾有以下代码。当我单击下面的按钮时,usercontrol加载一个网格。问题是,当加载网格时,它超出了查看范围,用户必须滚动到botton才能查看显示的网格

<asp:UpdatePanel runat="server">
    <ContentTemplate>
        <div style="border: thin; border-style: double">
            <asp:Panel ID="PnlRequired" runat="server" DefaultButton="BntOpenGridView_Click">
                <table style="width: 100%">                 
                <tr width="100%">
                    <td>                            
                        <asp:ImageButton ID="BtnOpenGridView" Visible="false" OnClick="BntOpenGridView_Click" runat="server" ImageUrl="~/Images/find1.png" Width="2.5%" />
                    </td>
                </tr>    
                <tr>
                    <td>    
                        <UserControl:RequiredGridView runat="server" ID="RqGrdView"></UserControl:KeywordsGridView>
                    </td>    
                </tr>
                <tr>
                    <asp:Label ID="lblErrorMessage2" runat="server" ForeColor="Red"></asp:Label>                       
                </tr>
            </table>
            </asp:Panel>              
        </div>
    </ContentTemplate>
</asp:UpdatePanel>
这不管用

我还尝试向Page PreRender添加相同的代码,如下所示:

protected void BntOpenGridView_Click(object sender, ImageClickEventArgs e)
{
      isRequiredGridViewClicked = true;
      // code to load gridview in usercontrol                
}

protected override void OnPreRender(EventArgs e)
{
      base.OnPreRender(e);
      if (isRequiredGridViewClicked)
      {
           ScriptManager.RegisterClientScriptBlock(Page, Page.GetType(), "focusOnGrid", "ScrollToGridView()", true);
           isRequiredGridViewClicked = false;
      }
}
这也不起作用,javascript启动正常,但gridview没有完整显示,用户必须手动滚动

我找到了解决办法。波斯特帮了大忙

我在我的aspx页面中添加了一个隐藏字段,当点击按钮时,这个隐藏字段将使用javascript设置为True。每次加载页面时,都会检查隐藏字段的值,如果是真的,文档会滚动到gridview控件上

这是我的剧本:

function SetHiddenField(){
            document.getElementById('MainContent_HiddenShowGrid').value = "True";
        }

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

        prm.add_endRequest(function() {
          if(document.getElementById('HiddenShowGrid').value == "True")
            {
                document.getElementById('MainContent_PnlKeyword').scrollIntoView(true);
                document.getElementById('HiddenShowGrid').value = "False";
            }
        }); 
这是隐藏字段的代码:

<tr width="100%">
    <td>
        <asp:Label ID="lblRequiredSrch" runat="server" Visible="false">Search for Required</asp:Label>

        <asp:TextBox ID="txtRequiredSrch" runat="Server" Visible="false" Width="60%" />
        <asp:ImageButton ID="btnRequiredSrchGridView" Visible="false" OnClientClick="SetHiddenField();" OnClick="btnRequiredSrchGridView_Click" runat="server" ImageUrl="~/Images/find1.png" Width="2.5%" />
    </td>
</tr>

<tr>
    <td>

        <UserControl:RequiredsGridView runat="server" ID="RequiredsGridView2"></Requireds:RequiredsGridView>
        <asp:HiddenField runat="server" ID="HiddenShowGrid" Value ="False" />
    </td>

</tr>

搜索所需的

第1步:我也有这个问题。我的解决方案是尝试获取scrollbar的值,并将该值保留到sessionStorage: 我的asp文件:

<div overflow: auto; width:1000px; height:400px;" onscroll="myFunction()" id="myscroll" runat="server" name="myscroll">
步骤2:等待gridview加载:(这意味着在获得gridview的代码之后插入此代码)并调用新函数来设置滚动条gridview。对于我的代码,我必须从c#调用Javafunction:

步骤3:按值设置位置gridview会话存储:

function gridview_finish() {
        var elmnt = document.getElementById("myscroll");
        elmnt.scrollTop=sessionStorage.getItem('focus');
    }

我强烈建议不要使用ASP.NET库(如ScriptManager等)进行任何JavaScript开发。您可以在元素的onload上使用js函数调用。问题及其答案可在@timothyclifford上找到,您能告诉我原因或参考文章吗?这只是我的意见,但。。。目前,您正在服务器和客户端代码中混合使用JavaScript。这段代码属于一个地方——客户机。UpdatePanel、ScriptManager和WebForms通常已经过时,您应该尽可能使用ASP.NET MVC。我不知道全部细节,所以你可能有理由不知道。@timothyclifford,我感谢你的帮助,我会在将来考虑这一点。谢谢
<div overflow: auto; width:1000px; height:400px;" onscroll="myFunction()" id="myscroll" runat="server" name="myscroll">
function myFunction() {
        var elmnt = document.getElementById("myscroll");
        sessionStorage.setItem('focus', elmnt.scrollTop);
    }
string script = "window.onload = function() { gridview_finish(); };";
        ClientScript.RegisterStartupScript(this.GetType(), "gridview_finish", script, true);
function gridview_finish() {
        var elmnt = document.getElementById("myscroll");
        elmnt.scrollTop=sessionStorage.getItem('focus');
    }