web-dev-qa-db-ja.com

UpdatePanelポストバックの問題の後にJavaScript関数を呼び出す

基本的に、UpdatePanelには、分離コード内のメソッドに基づいてJavaScript配列を生成するリテラルがあります。

ページの読み込み時にコンテンツを読み込む場合、問題はありません。しかし、updatepanel内でJavaScript配列リテラルを更新するための検索を実行しようとすると、JavaScriptがすでに起動した後、ポストバックでリテラルが更新されることがわかりました。

ここに私が持っているものの基本的な例があります:

<script type="text\javascript">
function BindMyFunction(itemList)
{
    //Do something
}
</script>

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>  
<!-- Literal containing generated JS array -->
    <asp:Literal ID="ProfileJavscriptOutput" runat="server"></asp:Literal> 
    <ul id="person-search">
    <li><asp:TextBox ID="TxtFirstname" runat="server" Text=""></asp:TextBox></li>
    <!-- Update Literal onClick -->
        <li><asp:ImageButton CssClass="searchbtn" ID="ImageButton1" runat="server" OnClick="ImageButton1_Click" /></li>
    </ul>    
    <!-- Some jCarousel rendered -->
</asp:UpdatePanel>

私は以下の投稿を見てきました:

ASP.NET-UpdatePanelおよびJavaScript

pdatepanelポストバック後にjavascriptを呼び出す

しかし、それをコードに正しく適用できないようです。

UpdatePanelを使用しない場合は問題ありません。ただし、検索時にページ位置が移動しないようにするための要件です。

16
R100

次のコードをPage_Loadイベントに追加できます。

ScriptManager.RegisterStartupScript(Me.rptGridAlbum, rptGridAlbum.GetType, "scriptname", "somejavascript", True)

これにより、AJAXコールバックの後にページのJavaScriptが起動します。

[〜#〜] msdn [〜#〜]

25
Andrew Ding

必要なときにいつでもJavaScript配列をページに返す単純なWebサービスメソッドを作成し、そのWebサービスの呼び出しをJavaScriptメソッドでラップすることができます。ブラウザ側でメモリ内の配列を更新するためにjavascriptメソッドを呼び出すと、js配列リテラルがUpdatePanelポストバックで再度解析されて成功することを期待するよりもうまく機能します。

0
Tahbaza
var prm = Sys.WebForms.PageRequestManager.getInstance();
if (prm != null) {
    prm.add_endRequest(function (sender, e) {
        if (sender._postBackSettings.panelsToUpdate != null) {
            DisplayCurrentTime(); // here your javascript function
        }
    });
};
0
Apps Tawale