jQueryオートコンプリートを使用するオートコンプリートドロップダウン用のASP.Net(VB.Net)カスタムコントロールを作成しようとしています。
基本的なフローは、コントロールのコンシューマーがいくつかのプロパティ(データソースなど)を設定し、オートコンプリートを初期化するためにjavascriptとして挿入されることです。
関係する部分がたくさんあるので、コードの一部を投稿できなかった可能性があります。何かが足りないと思われる場合はコメントしてください。追加します。
消費者のコードビハインド(PreInitイベント):
myDropDown.DataCallback = "testFunc";
コントロールのDataCallbackプロパティ:
Public Property DataCallback As String
オプションオブジェクトの作成と制御コードビハインドでのJavaScriptインジェクション(PreRenderイベント):
Dim _serializer As New JavaScriptSerializer()
Dim optionsObject As New Dictionary(Of String, Object)
optionsObject.Add("source", DataCallback)
Dim optionsJSON = _serializer.Serialize(optionsObject)
Dim initializeScript = String.Format("initialize('{0}', {1});", ClientID, optionsJSON)
Attributes.Add("onfocusin", initializeScript)
そして最後に、javascript:
var initialize = function (controlID, options) {
if (options) {
$('#' + controlID).autocomplete(options);
}
// remove the blur event handler that called this initialize function
$('#' + controlID).removeAttr('onfocusin');
};
initialize
関数をデバッグすると、文字列を値としてoptions
持つ1つのプロパティが表示されます。必要なのは、の値が(文字列としてではなく)であるため、URLであると考えるオートコンプリートではなく、オートコンプリートのコールバックとして実行できるようにすることです。source
"testFunc"
source
testFunc