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>

したがって、この小さなハックで、リンクボタンをクリックして、正常に動作するグリッドビューを更新します。最終的に、非表示のリンクボタンの_dopostbackメソッドを呼び出すだけのAsyncUpdateGridView()がJavascriptになります。

私が抱えている問題は、GridViewにJqueryDatePickersと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.netajaxによって提供されるイベントに登録する必要があります。ajax呼び出しの前後にいくつかのjavascriptを使用begin_requestend_requestて実行できます。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 に答える