我有一个非常重的ASP.net页面。
在这个页面上我在updatepanel中有一个gridview,所以我可以进行异步更新。
<asp:GridView ID="gvMail" runat="server" GridLines="None"
AutoGenerateColumns="false" Width="100%" OnRowDataBound="mail_RowDataBound"
CssClass="gridview" DataKeyNames="id">
<HeaderStyle HorizontalAlign="Left" />
<RowStyle ForeColor="#0072BC" HorizontalAlign="Left" CssClass="draggable" />
</asp:GridView>
</ContentTemplate>
</asp:UpdatePanel>
<!-- Hidden Link button for Async call back -->
<asp:UpdatePanel ID="updatePanel2" runat="server">
<ContentTemplate>
<asp:LinkButton ID="btnLoadData" onclick="btnLoadData_Click" runat="server"
Text="Fill GridView" CssClass="none"></asp:LinkButton> <!-- hidden-->
<a href="javascript: AsyncUpdateGridView()">A sync update</a>
<!-- testing purposes only-->
</ContentTemplate>
</asp:UpdatePanel>
所以有了这个小小的黑客,我点击了hte linkbutton来更新gridview,它工作正常。最后,只是调用隐藏链接按钮的_dopostback方法的AsyncUpdateGridView()将使用Javascript。
我遇到的问题是,我的GridView有Jquery DatePickers和Jquery花式Drop Down Box的列。它们加载了这个javascript调用:
function OnLoadPage() {
$(".jqueryselector").selectbox({
effect: "fade"
});
$(".jquerydatepicker").datepicker({ dateFormat: 'dd-mm-yy' });
}
$(document).ready(function () {
OnLoadPage();
}
我制作OnLoadPage()函数的原因是因为我在更新后进行了_DoPostBack调用之后尝试调用它。
然而这不起作用。所以现在当页面加载时,所有jquery datepicker,下拉框和其他花哨的东西我都在GridView中工作。但是在异步回调之后,它会重新加载所有默认的html。
答案 0 :(得分:1)
$(document).ready
未执行。您需要注册asp.net ajax提供的活动。您可以使用begin_request
和end_request
在ajax调用之前和之后执行一些javascript,如果要在完成ajax调用后调用javascript函数,则需要使用end_request,并且在调用ajax之前需要begin_request,关于他们的更多信息here
function OnLoadPage() {
$(".jqueryselector").selectbox({
effect: "fade"
});
$(".jquerydatepicker").datepicker({ dateFormat: 'dd-mm-yy' });
}
Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequestHandler);
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
function BeginRequestHandler(sender, args)
{
}
function EndRequestHandler(sender, args)
{
OnLoadPage();
}