javascriptでは、スクリプトによってUpdatePanelのリフレッシュをトリガします.
2279 ワード
最近はこのような機能を使う必要があります.インターネットで探してみました.方法は少なくないです.一番簡単な記録を選んできました.
まず、UpdatePanelでOnLoadの方法を宣言します.以下の通りです.
次に、UpdatePanelをトリガする必要がある場合は、次の方法で行います.
同前doPostBack('<%=UpdatePanel 1.lientID%>'')
私はajaxで呼び出しました.ページドキュメントの操作が完了したら、彼を呼び出します.
追加点の知識:開発者がよく出会う3つのajax問題:1.ページは局部的なpostbackの時にやはり更新をトリガしました.更新していない時にはudatepanelが更新をトリガしました.3.Loadイベントが完了した後、コントロールのイベントがトリガされます.
1.ページは部分的なpostbackの時にやはり更新をトリガしました.多くの開発者が知らないのは、ページのライフサイクルのすべてのイベントがトリガされ、ページの局部返送中に、ページのコントロールツリーが再構築され、コントロールごとにライフサイクルのイベントが実行され、ローカル返送中に、Page.IsPostBack is true.しかし、Script Manager.IsInAsyncPostback is trueは局所的な返送のみです.
2.UpdatePanelは毎回更新されます.なるべくUpdatePanelを使うライフサイクルイベントは、Init、Load、PreRender、Uloadのように、明確な区別とより安全な使用ができます.doPostBackは毎回呼び出したくないなら、呼び出し前に判断します.
Page_ロードは毎回実行されます.この点において、部分更新と全ページ更新は区別がありません.ドポスティックEVENTTARGETを一緒に使うと、リフレッシュが先に特定の目標(通常はサブパネル)に定められます.
まず、UpdatePanelでOnLoadの方法を宣言します.以下の通りです.
<asp:UpdatePanel ID="UpdatePanel1" runat="server" OnLoad="UpdatePanel1_Load">
<ContentTemplate>
...
</ContentTemplate>
</asp:UpdatePanel>
次に、UpdatePanelをトリガする必要がある場合は、次の方法で行います.
同前doPostBack('<%=UpdatePanel 1.lientID%>'')
私はajaxで呼び出しました.ページドキュメントの操作が完了したら、彼を呼び出します.
$.ajax({
type:"GET",
url:"UserRelationAjaxCall.aspx",
dataType:"text",
data:"Type=UserGroup&RelationID="+relationId + "&UserGroupStr="+passStr.trim(),
success:function(msg){
groupsArray = msg.decodeURIComponent().split('|');
generateGroups();
$('#no_group').hide()
//Aysn refresh list panel
__doPostBack('<%= UpdatePanel1.ClientID %>', '');
},
error:function(msg){
alert("Error");
}
});
これで一部が更新されます.追加点の知識:開発者がよく出会う3つのajax問題:1.ページは局部的なpostbackの時にやはり更新をトリガしました.更新していない時にはudatepanelが更新をトリガしました.3.Loadイベントが完了した後、コントロールのイベントがトリガされます.
1.ページは部分的なpostbackの時にやはり更新をトリガしました.多くの開発者が知らないのは、ページのライフサイクルのすべてのイベントがトリガされ、ページの局部返送中に、ページのコントロールツリーが再構築され、コントロールごとにライフサイクルのイベントが実行され、ローカル返送中に、Page.IsPostBack is true.しかし、Script Manager.IsInAsyncPostback is trueは局所的な返送のみです.
2.UpdatePanelは毎回更新されます.なるべくUpdatePanelを使うライフサイクルイベントは、Init、Load、PreRender、Uloadのように、明確な区別とより安全な使用ができます.doPostBackは毎回呼び出したくないなら、呼び出し前に判断します.
protected void UpdatePanel1_PreRender(object sender, EventArgs e)
{
// This code will only be executed if the partial postback
// was raised by a __doPostBack('UpdatePanel1', '')
if (Request["__EVENTTARGET"] == UpdatePanel1.ClientID)
{
// Insert magic here.
}
}
まとめて、いくつかの注意点:Page_ロードは毎回実行されます.この点において、部分更新と全ページ更新は区別がありません.ドポスティックEVENTTARGETを一緒に使うと、リフレッシュが先に特定の目標(通常はサブパネル)に定められます.