Подтвердить что ты не робот

RegisterStartupScript, похоже, не работает на обратной стороне страницы в панели обновления

ОК - я работаю над системой, использующей настраиваемый элемент управления датой (я знаю, что там есть другие), но для согласованности хотелось бы понять, почему моя текущая проблема происходит и исправить ее).

Поэтому его пользовательский элемент управления с текстовым полем и на странице_PreRender делает это:

protected void Page_PreRender(object sender, EventArgs e)
    {

        string clientScript = @"
        $(function(){
        $('#" + this.Date1.ClientID + @"').datepicker({dateFormat: 'dd/mm/yy', constrainInput: true});
        });";
        Page.ClientScript.RegisterStartupScript(this.GetType(), this.ClientID, clientScript, true);

        //Type t = this.GetType();
        //if (!Page.ClientScript.IsStartupScriptRegistered(t, this.ClientID))
        //{
        //    Page.ClientScript.RegisterStartupScript(t, this.ClientID, clientScript, true);
        //}
    }

Игнорировать прокомментированные вещи - это я пытался что-то другое - не помогло.

Моя проблема в том, что все это прекрасно работает при загрузке страницы. Но если я выберу что-то из раскрывающегося списка, вызывающего обратную передачу страницы - когда я нажимаю на поля даты, они перестают работать. Как и я, я должен иметь возможность щелкнуть текстовое поле, и появится хороший элемент управления календарем. Но после обратной передачи нет красивого управления календарем!

В настоящее время он завернут (на странице хостинга) внутри панели обновления. Поэтому я комментирую материал панели обновления, и даты работают после обратной передачи страницы. Таким образом, похоже, что-то связано с этой панелью обновлений.

Любые предложения, пожалуйста?

Спасибо!!

4b9b3361

Ответ 1

Вы пробовали ScriptManager вместо Page.ClientScript? Я просмотрел код, который я написал ранее с помощью UpdatePanels и jQuery, и я использовал ScriptManager. Я думаю, что script недоступен во время частичной обратной передачи, если он не зарегистрирован в ScriptManager.

Похож:

ScriptManager.RegisterStartupScript(Page, this.GetType(), "DatePickerScript", clientScript, true);