【问题标题】:auto scroll to bottom gridview asp.net自动滚动到底部gridview asp.net
【发布时间】:2011-07-07 16:09:45
【问题描述】:

我有一个网格。在单击 addbutton 网格时,将附加一个空行。但是该面板应该向我显示页面底部,以便用户应该看到最后一项。类似于 google 中的 gTalk 或聊天窗口。这是我的代码。如何让滚动条的位置始终在页面底部,请帮帮我

  <asp:Content ID="Body" ContentPlaceHolderID="MainContent" runat="server">
<script language="javascript" type = "text/javascript" >
window.onload = function() {     var objDiv = document.getElementById("<%=pnl.ClientID%>");     objDiv.scrollTop = objDiv.scrollHeight; }


</script>
 <ajx:ToolkitScriptManager ID="CalendarAjaxEnabler" runat="server">
    </ajx:ToolkitScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
  <ContentTemplate>
<uc1:StatusCodes ID="resultBanner" runat="server" />
    <div id="Div" runat="server" class="divFieldRow">           
         <div>
         <center>           
         <asp:Panel ID="pnl" runat="server"  ScrollBars="Both" style="width:auto;height:200px;">
          <asp:GridView ID="gvGrid" runat="server" AutoGenerateColumns="False" 
                        GridLines="None" AllowSorting="true"                           FooterStyle-BackColor="DimGray" EnableViewState="true" >

                <Columns>
                   <asp:TemplateField >                     
                       <HeaderTemplate>event</HeaderTemplate>
                        <ItemStyle HorizontalAlign="Center" />
                        <ItemTemplate>
                            <asp:Label ID="lblDesc" Visible='<%# ! IsInEditMode %>' runat="server" Text='<%# Eval("Desc") %>' />
                            <asp:TextBox ID="txtDesc" Visible='<%# IsInEditMode %>' runat="server" Text='<%#Eval("Desc")%>' MaxLength="255">
                            </asp:TextBox>                                                        
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField Visible = "false">
                        <HeaderTemplate>
                            Id</HeaderTemplate>
                        <ItemStyle HorizontalAlign="Center" />
                        <ItemTemplate>
                            <asp:TextBox ID="txtId" runat="server" Text='<%#Eval("Id")%>' ReadOnly="true"></asp:TextBox>
                        </ItemTemplate>
                    </asp:TemplateField>                   
                </Columns>                
            </asp:GridView>   
            </asp:Panel>              
            </center>
            </div>    

        <br />
        <br />              
        <asp:Button runat="server" Text="Edit" Style="margin-left: 50px" ID="btnEditevent" OnClick="btnEditEvent_Click" />        
        <asp:Button runat="server" Text="Add" Style="margin-left: 50px" ID="btnAddevent" OnClick="btnAddRowEvent_Click" />       
    </div>
    </ContentTemplate> 
     </asp:UpdatePanel>      
</asp:Content>

【问题讨论】:

    标签: .net asp.net gridview


    【解决方案1】:

    你必须在页面指令中设置MaintainScrollPositionOnPostback="true"

    <%@ Page Language="C#" MaintainScrollPositionOnPostback="true" %>
    

    【讨论】:

    • 我已经设置了,但页面加载后仍然没有将滚动条移到页面底部
    • 是的,你可以阅读这篇文章,如果你关注这篇文章,它会起作用。
    • 好的,还有一个小问题。在那篇文章中,他们希望我在脚本管理器下面添加脚本。但我没有在我的代码中使用任何脚本管理器。
    • 这不是问题,你可以简单地把那个脚本。
    【解决方案2】:

    你必须为此使用 javascript ..

    window.onload = function() {
        var objDiv = document.getElementById("<%=pnl.ClientID%>");
        objDiv.scrollTop = objDiv.scrollHeight;
    }
    

    这里是您的要求的示例 aspx 文件.. 它工作完美

     <%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>
    
     <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
     <html xmlns="http://www.w3.org/1999/xhtml" >
     <head runat="server">
         <title>Untitled Page</title>
          <script type="text/javascript">
                window.onload = function() {
                var objDiv = document.getElementById("<%=pnl.ClientID %>");
                objDiv.scrollTop = objDiv.scrollHeight;
        }
    </script>
    
    </head>
    <body>
        <form id="form1" runat="server">
        <asp:Panel ID="pnl" runat ="server" Height="200" Width="100%" ScrollBars ="vertical">
            <table border="1" >
                <tr><td>this is testing</td></tr>
                <tr><td>this is testing</td></tr>
                <tr><td>this is testing</td></tr>
                <tr><td>this is testing</td></tr>
                <tr><td>this is testing</td></tr>
                <tr><td>this is testing</td></tr>
                <tr><td>this is testing</td></tr>
                <tr><td>this is testing</td></tr>
                <tr><td>this is testing</td></tr>
                <tr><td>this is testing</td></tr>
                <tr><td>this is testing</td></tr>
                <tr><td>this is testing</td></tr>
                <tr><td>this is testing</td></tr>
                <tr><td>this is testing</td></tr>
                <tr><td>this is testing</td></tr>
                <tr><td>this is testing</td></tr>
                <tr><td>this is testing</td></tr>
            </table>
        </asp:Panel>
        </form>
    </body>
    </html>
    

    【讨论】:

    • 你能告诉我在哪里使用它吗?我是 javascript 新手。在 clientClick 事件的按钮单击事件(添加行 btn)中,您希望我调用此函数吗?你能解释一下吗?
    • 在 aspx 页面上使用它.. 在 head 标签内像这样
    • 我用过这个,但点击添加后,滚动条只在顶部。
    • 查看答案中的示例 aspx 文件希望你会有一些想法:)
    猜你喜欢
    • 1970-01-01
    • 2016-11-13
    • 2013-03-06
    • 2016-09-15
    • 2018-08-21
    • 2012-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多