我有一些Ajax被写入我的代码隐藏中的一些控件上,asp:UpdatePanel
中的一个控件是一个文本框,其中绑定了一个jQuery日期选择器小部件。当触发 Ajax 调用并刷新面板时,绑定的日期选取器小部件会因刷新而丢失,需要重新绑定。我的问题是:刷新asp:UpdatePanel
后,是否有任何方法或方式可以再次运行一些javascript?
更新:
<script type="text/javascript" language="javascript">
//Here I'm initially binding the datepicker to the txtFirstIllDate control, works great
$(document).ready(function () {
$('#<%= txtFirstIllDate.ClientID %>').datepicker(({
startDate: "01/01/1990",
showOn: "both",
buttonImage: "Images/calendar_2.png",
buttonImageOnly: true,
buttonText: "Select first ill date"
}));
});
</script>
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Always">
<ContentTemplate>
<asp:Label ID="lblStateID" runat="server" Text="State ID:"></asp:Label><asp:TextBox ID="txtStateID" runat="server" Width="40%" CssClass="floatRight" MaxLength="50"></asp:TextBox>
<asp:Label ID="lblFirstIllDate" runat="server" Text="First Ill Date:"></asp:Label><asp:TextBox ID="txtFirstIllDate" runat="server" Width="40%" CssClass="floatRight"></asp:TextBox>
<asp:Button ID="btnNewReport" runat="server" OnClick="btnNewReport_Click" Text="Create NORS Report" CssClass="marginBottom10px" />
<div class="clearFloat">
<asp:Label ID="lblErrorReportName" runat="server" ForeColor="Red" Font-Bold="true" Visible="false" CssClass="blockItem"></asp:Label>
<asp:Label ID="lblErrorFirstIll" runat="server" ForeColor="Red" Font-Bold="true" Visible="false" CssClass="blockItem"></asp:Label>
<asp:Label ID="lblErrorEstimatedPrimary" runat="server" ForeColor="Red" Font-Bold="true" Visible="false" CssClass="blockItem"></asp:Label>
<asp:Label ID="lblErrorModeOfTransmission" runat="server" ForeColor="Red" Font-Bold="true" Visible="false" CssClass="blockItem"></asp:Label>
</div>
</ContentTemplate>
</asp:UpdatePanel>
// Code behind when btnNewReport is pressed
protected void btnNewReport_Click(object sender, EventArgs e)
{
if (IsValidEntry())
{
//After all this code is ran and the panel is updated,
//the txtFirstIllDate control looses its datepicker widget.
//How do I get js to run again after the ajax panel update?
}
}
ASP.NET UpdatePanel 实现 JavaScript XMLHttpRequest
对象,以使用 AJAX 功能处理来自服务器的响应。
在 ASP.NET 页中添加脚本管理器和 UpdatePanel 控件时, 从内部加载客户端脚本库,Microsoft它具有XMLHttpRequest
对象相关的函数。
存在其他函数(来自Microsoft的脚本库((.axd 文件(。
通过 ScriptManager - UpdatePanel 的每个响应都在 ASP.NET 生命周期事件中进行处理。
你可以尝试这样的东西:
function pageLoad(sender, args) { // This function name is reservaded in ASP.NET AJAX when you use a ScriptManager in the page.
$('#<%= txtFirstIllDate.ClientID %>').datepicker(({
startDate: "01/01/1990",
showOn: "both",
buttonImage: "Images/calendar_2.png",
buttonImageOnly: true,
buttonText: "Select first ill date"
}));
}
您可以在此链接(Ajax 客户机生命周期事件(中找到更多信息。