私のプロジェクトのフロント ページには、コース計画を切り替える過程にある学生を一覧表示する「HUD」があります。これは、C# でいくつかの SQL ステートメントを実行し、HTML をレンダリングする別の .ascx ページへの AJAX 呼び出しを実行することによって行われます。次に、それをフロント ページに戻して、「dynamic」という名前の div に配置します。それを呼び出すフロントページのコードは次のとおりです。
function loadDynamic() {
var ControlName = "utilities/HUD.ascx";
$.ajax({
type: "POST",
url: "Default.aspx/Result",
data: "{controlName:'" + ControlName + "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response) {
$('#dynamic').html(response.d);
},
failure: function (msg) {
$('#dynamic').html(msg);
}
});
}
これは、複数の人がシステムで作業し、ライブ更新を取得できるようにするために行われます (10 秒ごとに loadDynamic() 関数を再呼び出しする別のスクリプトがありますが、それはこの問題とは関係ありません)。
ただし、一度にコース計画を変更しようとしている学生がかなりいる可能性があるため、ページのスペースを節約するために、「...and # more records」リンク ( href で javascript 呼び出しを含む < a > タグ) を使用すると、別の JavaScript 関数をアクティブにして、すべての生徒の個別のリストを表示し、少数の生徒のみを含むリストを非表示にします (この JavaScript 関数は HUD.ascx にあります)。ページ)。
<script type="text/javascript">
function loadMorePending() {
this.document.getElementById(<% =pnlMorePending.ClientID %>).style.visibility = 'visible';
this.document.getElementById(<% =pnlPending.ClientID %>).style.visibility = 'hidden';
}
</script>
背景がわかったので、ここに問題があります。
上記の 2 番目のコード ブロックには、HUD.ascx ページにあるリストを含む 2 つの asp:Panels への参照が含まれています。誰かが「...and more」リンクをクリックすると、1 つの asp:Panel が非表示になり、もう 1 つが表示されます。ただし、関数を呼び出すと、「Microsoft JScript ランタイム エラー: 'ctl01_pnlMorePending' は未定義です」がスローされます。さらに調査すると (ブラウザでレンダリングされた後に html ソースを見ると)、「動的な」div に HUD.ascx ページからのデータが取り込まれている場合でも、空のままです!
<div id="dynamic"></div>
これで pnlMorePending が見つからなかった理由は説明できますが、これを修正する方法についての手がかりは得られません。ページに存在しないものを参照するにはどうすればよいですか? パネルを div に置き換えてみましたが、まだ機能しません。問題は、スクリプトがフロント ページに正常に転送されるという事実にあると思いますが、必要な HUD.ascx ページでは実行されません。2 つの異なる HUD.ascx ページと 2 つの異なる「loadDynamic()」関数を使用せずにこれを行う方法はありますか (「...and more」ボタンが押されたときに、2 番目の関数が呼び出され、「動的」div に入力されます)。 ?
フォローするのが少し難しい場合は申し訳ありません。初めての投稿で、問題はかなり詳細です。