Я думаю, что вы испытываете является то, что ваш выбор даты больше не работает после асинхронной обратной передачи. Если это так вот один из способов ее решения -
window.onload = function() {
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequestHandler);
}
function endRequestHandler(sender, args) {
init();
}
function init() {
$("#<%=dpWorkWeek.ClientID %>").datepicker({
changeMonth: true,
changeYear: true
});
}
$(function() { // DOM ready
init();
});
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:TextBox ID="dpWorkWeek" runat="server" CssClass="dpWorkWeek"></asp:TextBox>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="btnLoadTimesheet" />
</Triggers>
Этот подход использует Sys.WebForms.PageRequestManager JavaScript class и возможно потому, что у вас есть Script Manager на странице .aspx. В основном после каждого асинхронного обратного вызова вызывается функция init().
Обратите внимание, что функция init() также вызывается в DOM ready. Это позволяет вам делать все, чтобы DOM вам нужно было сделать еще раз после того, как контент изменился во время асинхронной обратной передачи.
Я также удалил ваш атрибут ClientIdMode
, я думаю, что это вызовет проблемы в противном случае.
/редактировать
После просмотра ответ ниже вы можете, конечно, сделать это тоже, мне нравится это для краткости -
function pageLoad(sender, args) {
$("#<%=dpWorkWeek.ClientID %>").datepicker({
changeMonth: true,
changeYear: true
});
}
И если это не работает, это должно всегда -
Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(function(sender, args) {
// ...
});
Удивительный ответ! Просто решил ту же проблему, с которой я столкнулся. – Sephrial