Web サイトで UpdatePanels を使用すると大きな問題が発生します。問題は、ScriptManager を使用すると、ページが最初にロードされたときにアクティブだったすべてのクライアント側 JavaScript が、更新パネルがポストバックされると失われることです。
これが私がやろうとしていることです...
同じページに、それぞれ独自の更新パネル内に多数の .net カレンダー コントロールがあります。関連するテキスト ボックス内 (更新パネル内) をクリックするまで、カレンダーは最初は非表示になっています。その時点でカレンダーがポップアップ表示され、日付を選択できるようになります。これらのカレンダーは、実際に日付を変更する (ポストバックする) まではうまく機能します。その後、テキスト ボックス内をクリックしてもカレンダーがポップアップしなくなり、「オンフォーカス」JavaScript が失われます。
何時間もGoogleで調べた後、TextBoxに「onfocus」属性を動的に追加し、カレンダーがポストバックしたときに起動スクリプトをScriptManagerに登録することで、物事を半機能させることができます。
例:
TextBox1.Attributes.Add("onfocus", "document.getElementById('searchArrivalDateCalendarDiv').style.display = 'block';")
ScriptManager.RegisterStartupScript(Page, GetType(Page), "StopTxtClick", "$(document).ready(function(){$('.txtArrivalDate').click(function(event){event.stopPropagation(); $('div.searchArrivalDateCalendarDiv').show(); });});", True)
これは、特にマスター ページを導入する場合には、実際的ではないように思えます。とんでもない数の起動スクリプトを再登録しなければならなくなります。
もっと簡単な方法があるはずですか?