jQuery auto-completeを使用する自動補完ドロップダウンのASP .Net(VB.Net)カスタムコントロールを作成しようとしています。jqueryオートコンプリートAPIを模倣するWebサーバーコントロールを作成
基本的な流れは、コントロールのコンシューマーがいくつかのプロパティ(データソースなど)を設定し、オートコンプリートを初期化するための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
はそれが価値だと文字列"testFunc"
で、一つの特性、source
を持って参照してください。私が必要としているのは、source
の値がtestFunc
(文字列ではありません)であるため、オートコンプリートではなく、自動補完でコールバックとして実行できます。
'_serializer'の型を知ることは役に立ちます。あなたが 'DataContractJsonSerializer'を使用している場合、' optionsObject'がjQuery UI用の有用なJSONオブジェクトに正しくシリアル化されるという方法はありません。また、データ・コールバック関数名を引用符で囲んで文字列からオブジェクト参照に変換する必要があります。 – lsuarez
_serializerは( 'System.Web.Script.Serialization'の)' JavaScriptSerializer'です。この情報で質問を更新しました。 – jbabey