1

私はプロジェクト (ASP.Net AJAX、JSON) を引き継ぎました。そこでは、1,430 エントリの大きな選択 (コンボ ボックス) リストをロードし、メイン (ランディング) 検索ページに問題なくロードするページがあります。

問題:編集または挿入するページをロードすると、 MicrosoftAjaxTemplates.debug.js で次のエラーが発生します。検索ページと編集ページの違いは、関連する ajax データ バインディングがあることです。

Microsoft JScript runtime error: その他の情報はありません。

行にfunction Sys$UI$Template$compile()

element._msajaxtemplate = [this.instantiateIn = new Function("_containerElement", "$dataItem", "$index", "_referenceNode", "$parentContext", "_instanceId", code), nestedTemplates];

要素の内部 html の一部を次に示します (ほとんどのオプションを削除しましたが、1,430 個のオプションがあります)。

select style="width: 500px;" id="ddl_1_CompanyID_53f3ff5f-3070-4473-b8d9-e4055e29e0e9" önchange="UpdateObserver('CompanyID', this.value);" class="queryfield" title="Company" fieldbinding="CompanyID" LoadOnDemand="false" sys:value="{{CompanyID}}" width="500px" showcode="False" descfield="CompanyDescription" codefield="CompanyID" queryid="1" lookupid="1" sys:attach="dataview"> option value="0">(None) /option> /select> ... 1,429 options...

HTML 全体をjsfiddle.netに貼り付けると、選択リスト (コンボ ボックス) がすべてのオプションがリストされた状態でレンダリングされます (エラーなし)。

選択リストの作成に使用されたデータが原因であると考えたので、データの半分を削除してエラーを解消するバイナリ ソート アプローチを採用しました。残りの半分をテストしましたが、エラーはありませんでした。しかし、1,430 個のオプションすべてでエラーが発生します。

試行された回避策 次のアプローチは、選択リスト (コンボ ボックス) のオンフォーカスでデータをロードすることでした。メイン ページでは、問題ありません... コントロールにフォーカスがあり、リストが表示されます。PrettyPhoto ページではエラーはありません。ただし、リストは空です。Fiddler2を使用すると、JSON データが返されていることがわかり、javascript でバインディングが発生するブレーク ポイントを配置できます。ただし、選択リスト (コンボ ボックス) は空です。

私はPrettyPhotoで他の問題に遭遇し、日付ピッカーの問題を解決するのに役立つ次のことを読みました。ライトボックスのDOM要素の「ソース

これと同じ問題は、選択リストがロードされていないことに関係していると思います。これを修正する方法がわかりません。

デバッグ きれいな写真の使用を削除しましたが、問題は解決しませんでした (この問題はバインディングとデータ量にあるようです)。IE 9 (または 8) では、元の問題が発生します。FireFox と Chrome では、すべて問題ありません。

私はしばらくの間、この問題に頭を悩ませてきました。私を正しい方向に導くための提案やヒントは大歓迎です。

4

1 に答える 1

0

最終的な解決策は、すべてのデータをドロップダウン リストに事前にロードしないことでした。ただし、必要に応じてデータをロードします。ユーザーが「A」キーを押すと、「A」で始まるすべてのデータがリストにロードされ、エラーは発生しませんでした。

于 2014-05-02T22:28:09.947 に答える