"jQuery UI Datepicker не работает после частичной обратной передачи ajax"
Поместите менеджер скриптов и панель обновления на страницу.
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<asp:UpdatePanel ID="upd1" runat="server">
<ContentTemplate>
</ContentTemplate>
</asp:UpdatePanel>
Теперь поместите текстовое поле и кнопку внутри панели обновления.
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<asp:UpdatePanel ID="upd1" runat="server">
<ContentTemplate>
<div style="font-family: Arial; font-size: small;">
Select Date :
<asp:TextBox ID="txtDate" runat="server"Font- Names="Arial">
</asp:TextBox>
</div>
<asp:Button ID="btnAjax" runat="server" Text="Ajax PostBack"
OnClick="btnAjax_Click" />
</ContentTemplate>
</asp:UpdatePanel>
Теперь свяжите элемент управления datepicker с текстовым полем.
<script type="text/javascript" language="javascript">
$(document).ready(function(){
$("#<%=txtDate.ClientID %>").datepicker(
{ changeMonth:true,
changeYear:true,
showOn: 'button',
buttonText:'Show Date',
showAnim: 'fadeIn',
showButtonPanel: true,
dateFormat: 'DD, MM d, yy',
buttonImage: 'Images/imgCalendar.png',
buttonImageOnly: true
}
);
$(".ui-datepicker-trigger").mouseover(function() {
$(this).css('cursor', 'pointer');
});
});
<script>
Теперь создайте щелчок на стороне сервера для кнопки, которая вызовет частичную обратную передачу ajax.
protected void btnAjax_Click(object sender, EventArgs e)
{
System.Threading.Thread.Sleep(1000);
}
При запуске страницы вы увидите что-то вроде этого
Нажмите на кнопку выбора даты. Datepicker открывается, и выбранная дата становится значением текстового поля.
Теперь нажмите на кнопку. Будет вызван щелчок кнопки на стороне сервера, и теперь вы увидите что-то вроде этого.
Кнопка выбора даты исчезла. Итак, что нам теперь делать, чтобы она работала в ajax. Смотрите ниже код.
<script type="text/javascript" language="javascript">
function pageLoad(sender, args)
{
$(document).ready(function(){
$("#<%=txtDate.ClientID %>").datepicker(
{ changeMonth:true,
changeYear:true,
showOn: 'button',
buttonText:'Show Date',
showAnim: 'fadeIn',
showButtonPanel: true,
dateFormat: 'DD, MM d, yy',
buttonImage: 'Images/imgCalendar.png',
buttonImageOnly: true
}
);
$(".ui-datepicker-trigger").mouseover(function() {
$(this).css('cursor', 'pointer');
});
});
}
</script>
Функция pageLoad () доступна в JavaScript, если вы используете ASP.NET ajax. Платформа AJAX автоматически подключает любую клиентскую функцию с именем pageLoad () в качестве обработчика Application.Load
Источники ссылок на источники
http://www.jquerybyexample.net/2010/08/jquery-datepicker-does-not-work-after.html