Несколько панелей обновления на странице удаляют календарь Datepicker JavaScript из текстового поля - PullRequest
2 голосов
/ 06 октября 2010

На самом деле у меня есть несколько панелей обновления на странице, которые обновляют различные значения на сервере, но проблема в том, что у меня есть текстовое поле, к которому я прикрепляю класс javascript для datepicker при событии Load.

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

txtDate.Attributes.Add("class", "show-week w16em dateformat-d-sl-m-sl-Y"); 

Перед использованием любой панели обновления вот так

alt text

После того, как мы обновили любой элемент управления панели обновлений, он выглядит следующим образом.

alt text

Но элементы управления Date, которых нет ни в одной панели обновления, в порядке и работают.

И в этих панелях обновления я фактически сохраняю значения в DataTables и сохраняю эти DataTables в viewState .... без изменений в HTML.

Ответы [ 3 ]

2 голосов
/ 06 октября 2010

Я полагаю, что средство выбора даты и его текстовое поле помещены в панель обновления?

Если вы выполните ajax-postback с UpdatePanels, сервер отправит html обратно для всех UpdatePanels на странице и обновит все их содержимое, так что ваш DatePicker исчезнет.

Если вы установите UpdateMode=Conditional на UpdatePanels, то обновятся только UpdatePanels, вызвавшие обратную передачу.

Другой вариант - воссоздать указатель даты с помощью ScriptManager.RegisterStartupScript, но это, возможно, сбрасывает его значение (зависит от того, какой это указатель даты).

1 голос
/ 06 октября 2010

Какой бы метод вы ни использовали для присоединения средства выбора даты, вы должны снова вызвать его после обновления панели обновления

. Вы можете сделать это на стороне сервера с помощью this :

// at some point of the method that updates the panel
ScriptManager.RegisterStartupScript(
    this, typeof(object), "someUniqueKey", "theScript();", true);

или на стороне клиента с этим:

// <body onload='...'> or in the <head>
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(
    function () { theScript() });
1 голос
/ 06 октября 2010

Вы изменяете INNERHTML DIV или TABLE, в котором присутствует TextBox, потому что, если вы это делаете, он удаляет элемент управления каландром после обновления DIV или TABLE.

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