AutoPostback неправильно устанавливает фокус - PullRequest
2 голосов
/ 29 декабря 2010

У меня есть страница, на которой когда происходит автоматическая или частичная обратная запись, фокус устанавливается на адресную строку, а не на следующий элемент управления. Интересно то, что когда я помещаю предупреждение в свой RadScriptBlock, после нажатия кнопки ОК фокус переходит к правильному элементу управления - или, если я помещаю в недопустимое местоположение, фокус возвращается в элемент управления ExpLocation, и когда правильное местоположение введите второй раз, команда табуляции / фокус работает правильно (см. код ниже).

Это имеет верх

    <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server">
    <AjaxSettings>
        <telerik:AjaxSetting AjaxControlID="RadAjaxPanel1">
            <UpdatedControls>
                <telerik:AjaxUpdatedControl ControlID="RadAjaxPanel1" LoadingPanelID="RadAjaxLoadingPanel1" />
            </UpdatedControls>
        </telerik:AjaxSetting>
        <telerik:AjaxSetting EventName="OnTextChanged" AjaxControlID="RadNumericTextBox_GLm">
            <UpdatedControls>
                <telerik:AjaxUpdatedControl ControlID="RadNumericTextBox_GLm" LoadingPanelID="RadAjaxLoadingPanel1" />
                <telerik:AjaxUpdatedControl ControlID="lblGlCodeErrorMessage" LoadingPanelID="RadAjaxLoadingPanel1" />
            </UpdatedControls>
        </telerik:AjaxSetting>
        <telerik:AjaxSetting EventName="OnTextChanged" AjaxControlID="RadNumericTextBox_ExpLocation">
            <UpdatedControls>
               <telerik:AjaxUpdatedControl ControlID="lblGlCodeErrorMessage" LoadingPanelID="RadAjaxLoadingPanel1" />
                <telerik:AjaxUpdatedControl ControlID="RadNumericTextBox_ExpLocation" LoadingPanelID="RadAjaxLoadingPanel1" />
            </UpdatedControls>
        </telerik:AjaxSetting>
    </AjaxSettings>
</telerik:RadAjaxManager>

Имеет этот контроль ..

<telerik:RadNumericTextBox ID="RadNumericTextBox_ExpLocation" runat="server" Width="20px" AutoPostBack="true"
MaxLength="3" NumberFormat-AllowRounding="False" Type="Number" NumberFormat-KeepTrailingZerosOnFocus="True"
IncrementSettings-InterceptMouseWheel="false" OnTextChanged="LocationCheck_OnTextChanged" TabIndex="101">
<NumberFormat DecimalDigits="0" GroupSeparator="" AllowRounding="false" KeepNotRoundedValue="false" />

с этим кодом позади

    protected void LocationCheck_OnTextChanged(object sender, System.EventArgs e)
{
    var cmdText = "SELECT LMLOC FROM DBMOTO..XALOCNP WHERE  " +
            " LMLOC = @ExpLocation ";
        using (var conn = new SqlConnection(ConfigurationManager.ConnectionStrings["MAINConnectionString"].ToString()))
        using (var cmd = new SqlCommand(cmdText, conn))
        {
            cmd.Parameters.Add(new SqlParameter("@ExpLocation", RadNumericTextBox_ExpLocation.Text));
            conn.Open();
            SqlDataReader dr = cmd.ExecuteReader();
            if (dr.HasRows)
            {
                Session["ValidGL"] = false;
                lblGlCodeErrorMessage.Visible = false;
                lblGlCodeErrorMessage.Text = "Good Location";
                btnAddItem.Enabled = false;
                btnDone.Enabled = false;
                RadNumericTextBox_GLm.Focus();
            }
            else
            {
                lblGlCodeErrorMessage.Visible = true;
                lblGlCodeErrorMessage.Text = "Invalid/Inactive Location";
                btnAddItem.Enabled = false;
                btnDone.Enabled = false;
                RadNumericTextBox_ExpLocation.Focus();
            }
        }
}

Ответы [ 2 ]

1 голос
/ 05 января 2011

Попробуйте установить фокус с помощью метода ScriptManager и отключите ajax, чтобы выяснить, связана ли неисправность с ajaxification. Это живое демо использует оба метода и может служить вашей отправной точкой.

1 голос
/ 29 декабря 2010

Пробовали ли вы использовать метод FocusControl с помощью RadAjaxManager или один из следующих методов: http://www.telerik.com/help/aspnet-ajax/input_commonfocus.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...