Setfocus () на главной странице - PullRequest
1 голос
/ 02 июня 2011

У меня установлен фокус для свойства, которое я пытаюсь использовать на главной странице, но я не могу этого сделать.

public partial class Site1 : System.Web.UI.MasterPage
{
    protected void Page_Load(object sender, EventArgs e)
    {
            Page.MaintainScrollPositionOnPostBack = true;
            SetFocus(this);

    }
      public void SetFocus(Site1 site1)
    {
        string[] sCtrl = null;
        string sCtrlId = null;
        Control sCtrlFound = default(Control);
        string sCtrlClientId = null;
        string sScript = null;

        sCtrl = site1.Request.Form.GetValues("__EVENTTARGET");
        if ((sCtrl != null))
        {
            sCtrlId = sCtrl[0];
            sCtrlFound = site1.FindControl(sCtrlId);
            Global.logger.Info("sCtrlId = " + sCtrlId + ", " + sCtrlFound);
            if ((sCtrlFound != null))
            {
                sCtrlClientId = sCtrlFound.ClientID;
                Global.logger.Info("sCtrlClientId = " + sCtrlClientId);

                sScript = "<SCRIPT language='javascript'>document.getElementById('" + sCtrlClientId + "').focus(); if (document.getElementById('" + sCtrlClientId + "').scrollIntoView(false)) {document.getElementById('" + sCtrlClientId + "').scrollIntoView(true)} </SCRIPT>";

                site1.ClientScript.RegisterStartupScript(typeof(string), "controlFocus", sScript);

            }
        }
    }
    }

Я получаю сообщение об ошибке в последней строке:

'System.Web.UI.MasterPage' does not contain a definition for 'ClientScript' and no extension method 'ClientScript' accepting a first argument of type 'System.Web.UI.MasterPage' could be found (are you missing a using directive or an assembly reference?)

Этот код отлично работает на обычной странице содержимого. Ошибка только на главной странице.

Есть ли у вас какие-либо предложения о том, что я могу сделать, чтобы код работал?

1 Ответ

1 голос
/ 02 июня 2011

Я не уверен, что это работает, но он должен хотя бы скомпилироваться:

Заменить:

site1.ClientScript.RegisterStartupScript(typeof(string), "controlFocus", sScript);

На:

site1.Page.ClientScript.RegisterStartupScript(GetType(String), "controlFocus", sScript);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...