0

我有一个 jquery 重的 ASP.net 页面。

在此页面上,我在更新面板中有一个网格视图,因此我可以进行异步更新。

<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 链接按钮来更新工作正常的 gridview。最终,仅调用隐藏链接按钮的 _dopostback 方法的 AsyncUpdateGridView() 将在 Javascript 中。

我遇到的问题是我的 GridView 的列是 Jquery DatePickers 和 Jquery 花式下拉框。他们加载了这个 javascript 调用:

  function OnLoadPage() {
            $(".jqueryselector").selectbox({
                effect: "fade"
            });

            $(".jquerydatepicker").datepicker({ dateFormat: 'dd-mm-yy' });
        }

        $(document).ready(function () {
            OnLoadPage();
        }

我制作 OnLoadPage() 函数的原因是因为我在更新后执行了 _DoPostBack 调用后尝试调用它。

但是,这不起作用。所以现在当页面开始加载时,所有的 jquery datepicker、下拉框和其他我在 GridView 中工作的花哨的东西。但是在异步回调之后,它会重新加载所有默认的 html。

4

1 回答 1

1

$(document).readyajax 面板调用完成并更新 html 块后不执行。为此,您需要注册 asp.net ajax 提供的事件。您可以使用begin_requestandend_request用于在 ajax 调用之前和之后执行一些 javascript,如果您想在 ajax 调用完成后调用 javascript 函数,您需要使用 end_request 并且在 ajax 调用之前您需要 begin_request,更多关于它们的信息请点击此处

   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();
}
于 2012-08-15T01:39:24.507 回答