カスタムレンダリングされたHTMLリンクによってトリガされたカスタムイベントをインターセプトするためのIPostBackEventHandlerインターフェイスを実装するカスタムコントロール(ascx)があります。hrefの外の__doPostBackは全面ポストバックを引き起こします
このコントロールでは、更新パネルを使用しています。更新パネル内では、カスタムHTMLリンクをレンダリングするリテラルコントロールを使用します。
私は次のコードでのStringBuilderを使用するリテラルコントロール内のHTMLリンクのレンダリング:
sb.AppendFormat ("<a href=\"{0}\" id=\"custom_iterator_id\">Text</a>",
this.Page.ClientScript.GetPostBackClientHyperlink(this, custom_string_param));
ハイパーリンクが微細化されており、それらをクリックしたとき、非同期ポストバックがトリガーと部分更新があるさ(リンクはすべてUpdateパネル内にレンダリングされるため)
問題は、上記のコードでレンダリングされる__doPostBackを発生させる前にカスタムJavascriptを実行する必要があることです。ここでの問題は、ときということです
<script language="javascript" type="text/javascript">
function JSFunc(param) {
// custom js code here ....
__doPostBack('<%=this.ClientID%>', param);
}
</script>
:私は(更新パネルの内側または外側の)次のコードを使用しASCXマークアップでも
sb.AppendFormat ("<a href=\"javascript:JSFunc{0}\" id=\"custom_iterator_id\">Text</a>",
custom_string_param);
:だから、ここで変更されたコードの簡易版でありますリンクがクリックされると、完全なポストバックが実行され、部分的なポストバックは実行されません。私も上記のコードのより単純なバージョンをテストし、リンク(タグ)からhrefまたはonclickイベントから__doPostBackを削除し、それをカスタムjs関数に移動すると、リンクに完全なポストバックがトリガされます。
ページにエラーはなく、両方の場合にコードが正しく機能することに注意してください。ページは__doPostBackから返されたパラメータによって正しくレンダリングされますが、2番目のケースでは部分的なポストバックの代わりにフルが発生しています。
アイデア?事前に
おかげで、
ジョージ
質問ごとに1つの回答を[承諾](http://meta.stackexchange.com/q/5234)としてマークすることができますか? –