2013-10-03 3 views
1

У меня есть asp: gridview, в котором установлен флажок в виде столбца. Я поставил это gridview на панели asp: с полосами прокрутки. Я скажу 500 записей в виде сетки.gridview получает прокрутку сверху

Моя проблема в том, когда я нажимаю на этот флажок (скажем, 200-я запись), он прокручивается вверх. Причина в том, что я хочу, чтобы некоторые из ячеек редактировались в GridView, и эта часть работает нормально. но он прокручивается вверх. то потом мне придется прокручивать вниз, чтобы внести изменения.

Любые предложения по этому поведению.

Html Markup

<asp:UpdatePanel ID="UpdatePanel5" runat="server"> 
<ContentTemplate> 
<asp:Panel runat="server" ID="p1" Height="250px" Width="100%" ScrollBars="Both"> 
<asp:GridView ID="gv1" runat="server" CellPadding="3" AutoGenerateColumns="False" 
    GridLines="Vertical" BackColor="White" BorderColor="#999999" BorderStyle="None"  
    BorderWidth="1px" Width="108%"> 
    <Columns> 
    <asp:TemplateField HeaderStyle-Width="20px" HeaderStyle-HorizontalAlign="Center"  
    HeaderStyle-VerticalAlign="Middle"> 
    <ItemTemplate> 
    <asp:CheckBox ID="chkSelect" runat="server" AutoPostBack="true" 
    OnCheckedChanged="checkBoxID_CheckedChanged"/> 
    </ItemTemplate> 
    </asp:TemplateField> 
    <asp:TemplateField HeaderText="OT Hours"> 
    <ItemStyle Height="35px" Width="60px"/> 
    <ItemTemplate> 
    <asp:TextBox runat="server" ID="txtOThrs" Text= '<%# Bind("othours") %>' Width="60px" 
    Font-Size="10px" ReadOnly="true" AutoPostBack="true"></asp:TextBox> 
    </ItemTemplate> 
    </asp:TemplateField> 
    <asp:TemplateField HeaderText="OTAuth"> 
    <ItemStyle Height="35px" Width="60px"/> 
    <ItemTemplate> 
    <asp:DropDownList runat="server" ID="ddlOTAuth" AutoPostBack="true" Font-Size="10px" 
    Width="80px" Height="20px" Enabled="false" Text='<%# Eval("OTAuthorized") %>' > 
    <asp:ListItem Value="Y">Yes</asp:ListItem>     
    <asp:ListItem Value="N">No</asp:ListItem>     
    </asp:DropDownList> 
    </ItemTemplate> 
    </asp:TemplateField> 
    </asp:GridView>        
    </asp:Panel> 
    </ContentTemplate> 
    </asp:UpdatePanel> 
+0

установите MaintainScrollPositionOnPostback как true в этой директиве страницы –

+0

Возможный дубликат [Поддержание положения прокрутки панели на частичной обратной стороне ASP.NET] (http://stackoverflow.com/questions/5288682/maintain-panel-scroll-position-on-partial-postback -asp-net) – Paritosh

ответ

2

Для поддержания позиции прокрутки для большого веб-страницы, вы можете использовать на один из этих методов:

1- использование Web.config страница раздела <pages maintainScrollPositionOnPostBack="true" />

: это будет поддерживать позиции прокрутки для всех страниц веб-сайта.

2- в объявлении страницы <%@ Page MaintainScrollPositionOnPostback="true" %>: это будет поддерживать положение прокрутки только для этой страницы.

3- программно от кода, стоящего за System.Web.UI.Page.MaintainScrollPositionOnPostBack = true;: это будет поддерживать положение прокрутки только для этой страницы (то же, что и для прокрутки страницы).

+0

Я использовал этот <% @ Page MaintainScrollP ositionOnPostback = "true"%> все еще не работает –

1
protected void gv1_RowEditing(object sender, GridViewEditEventArgs e) 
    { 
     gv1.Rows[e.NewEditIndex].findcontrol("chkSelect").focus(); 

    } 
0

Вы можете использовать всплывающий DIV включая редактируемые поля, я думаю, что это простой способ редактирования

Смежные вопросы