我认为您遇到的是您的日期选择器在异步回发后不再工作。如果是这种情况,这是解决它的一种方法 -
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 类并且是可能的,因为您的 .aspx 页面上有一个脚本管理器。基本上在每次异步回发之后,都会调用 init() 函数。
注意 init() 函数也在 DOM 就绪状态下被调用。这允许您在异步回发期间内容更改后再次对 DOM 执行所有操作。
我还删除了您的ClientIdMode
属性,否则我认为这会导致问题。
/编辑
看到下面的答案后,您当然也可以这样做,我喜欢它的简洁性 -
function pageLoad(sender, args) {
$("#<%=dpWorkWeek.ClientID %>").datepicker({
changeMonth: true,
changeYear: true
});
}
如果这不起作用,这应该总是 -
Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(function(sender, args) {
// ...
});