Почему прокрутка «Вверх» после события изменила текст?(Странное действие) - PullRequest
0 голосов
/ 07 августа 2011

Q:

У меня есть вид сетки, который содержит текстовое поле в качестве поля шаблона. Вид сетки существует на панели обновлений.Моя проблема:

Когда сработало событие изменения текста, почувствуйте себя браузером jump, похожим на поведение (отправка назад). , но это не отправка назад .Я не знаю, почему это странное поведение произошло.

мой aspx:

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
            <asp:Panel ID="pnl_research" runat="server" CssClass="pnl">
                <div id="detailsDiv" align="center" style="width: 800px;">
                    <table border="0" width="98%">
                        <tr>
                            <td align="center">
                                <div class="grid" dir="rtl">
                                    <div class="grid" dir="rtl">
                                        <div class="rounded">
                                            <div class="top-outer">
                                                <div class="top-inner">
                                                    <div class="top">
                                                        <h2>
                                                            <asp:Label ID="Label35" runat="server" Text="جدول التقييم العام"></asp:Label></h2>
                                                    </div>
                                                </div>
                                            </div>
                                            <div class="mid-outer">
                                                <div class="mid-inner">
                                                    <div class="mid">
                                                        <asp:GridView Width="100%" ID="gv_Evaluation" CssClass="datatable" AllowSorting="True"
                                                            runat="server"  AutoGenerateColumns="False" AllowPaging="True" GridLines="None"
                                                            OnRowDataBound="gv_Evaluation_RowDataBound">
                                                            <EmptyDataTemplate>
                                                                <table style="width: 100%;">
                                                                    <tr>
                                                                        <td>
                                                                        &nbsp;
                                                                    </tr>
                                                                    <tr>
                                                                        <td align="center">
                                                                            <asp:Label ID="Label4" runat="server" Font-Size="16pt" Text="&#1604;&#1575; &#1610;&#1608;&#1580;&#1583; &#1576;&#1610;&#1575;&#1606;&#1575;&#1578;"></asp:Label>
                                                                        </td>
                                                                    </tr>
                                                                    <tr>
                                                                        <td>
                                                                            &nbsp;
                                                                        </td>
                                                                    </tr>
                                                                </table>
                                                            </EmptyDataTemplate>
                                                            <Columns>
                                                                <asp:TemplateField HeaderText="م">
                                                                    <ItemTemplate>
                                                                        <asp:Label ID="lblSerial" runat="server"></asp:Label></ItemTemplate>
                                                                </asp:TemplateField>
                                                                <asp:BoundField HeaderText="نوعية النشاط" DataField="activityType" />
                                                                <asp:BoundField HeaderText="أوزان النشاط" DataField="activityWeight" />
                                                                <asp:TemplateField HeaderText="التقييم">
                                                                    <ItemTemplate>
                                                                        <telerik:RadTextBox ID="txt_evaluateWeights" runat="server" AutoPostBack="True" OnTextChanged="txt_evaluateWeights_TextChanged"
                                                                            hideData='<%#((GridViewRow)Container).RowIndex%>'>
                                                                        </telerik:RadTextBox>
                                                                        <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="txt_evaluateWeights"
                                                                            Display="Dynamic" ErrorMessage="*" SetFocusOnError="True"></asp:RequiredFieldValidator></ItemTemplate>
                                                                </asp:TemplateField>
                                                                <asp:BoundField HeaderText="التقييم الذاتي" DataField="activitySelf" />
                                                                <asp:BoundField HeaderText="تقييم رئيس القسم" DataField="activityBoss" />
                                                                <asp:BoundField HeaderText="تقييم العميد" DataField="activityDean" />
                                                            </Columns>
                                                            <RowStyle VerticalAlign="Top" CssClass="row" />
                                                        </asp:GridView>
                                                    </div>
                                                </div>
                                            </div>
                                            <div class="bottom-outer">
                                                <div class="bottom-inner">
                                                    <div class="bottom">
                                                    </div>
                                                </div>
                                            </div>
                                        </div>
                                    </div>
                                </div>
                            </td>
                        </tr>
                    </table>
                </div>
            </asp:Panel>
        </ContentTemplate>
    </asp:UpdatePanel>

РЕДАКТИРОВАТЬ:

Я удаляю

эту строку hideData='<%#((GridViewRow)Container).RowIndex%>'


 protected void txt_evaluateWeights_TextChanged(object sender, EventArgs e)
        {

            calc();
            int index = ((System.Web.UI.WebControls.GridViewRow)(((RadTextBox)sender).Parent.NamingContainer)).DataItemIndex;
            //int index = int.Parse(((RadTextBox)sender).Attributes["hideData"]);
            ((RadTextBox)gv_Evaluation.Rows[index + 1].Cells[3].FindControl("txt_evaluateWeights")).Focus();
        }

все та же проблема !!


EDIT2:

 protected void gv_Evaluation_RowDataBound(object sender, GridViewRowEventArgs e)
    {

        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            Label lblSerial = (Label)e.Row.FindControl("lblSerial");
            lblSerial.Text = ((gv_Evaluation.PageIndex * gv_Evaluation.PageSize) + e.Row.RowIndex + 1).ToString();

            RadTextBox txt = e.Row.FindControl("txt_evaluateWeights") as RadTextBox;
            ScriptManager.GetCurrent(this).RegisterAsyncPostBackControl(txt);  
        }


    }

все та же проблема!!


EDIT3:

Я знал проблему, но я не знаю, как ее исправить:

проблема заключается в том,результат этой строки:

 ((RadTextBox)gv_Evaluation.Rows[index + 1].Cells[3].FindControl("txt_evaluateWeights")).Focus();

но мне нужна эта строка кода.Как помешать методу Focus() совершить прыжок в начало страницы.

Ответы [ 2 ]

2 голосов
/ 07 августа 2011

Нужен ли здесь символ # (строка 2 ниже):

<telerik:RadTextBox ID="txt_evaluateWeights" runat="server" AutoPostBack="True" OnTextChanged="txt_evaluateWeights_TextChanged" hideData='
<%#((GridViewRow)Container).RowIndex%>'>

Если вы используете пустую привязку имени # ak html в ссылке, она заставит страницу перейти наверх.

ех. верхний создаст ссылку, которая при нажатии приведет вас к началу страницы. Ваше событие OnTextChange выглядит так, как будто оно содержит #, который может быть причиной вашей проблемы.

1 голос
/ 07 августа 2011

Вы уверены, что это не Postback?Вы должны определить свои триггеры.

Я полагаю, что это может быть аналогичная проблема с решением: Полная обратная передача, инициированная LinkButton внутри GridView внутри UpdatePanel

...