0

データベーステーブルを通過し、適切な列名を持つすべての行を収集する巨大なオブジェクトを作成しました(sxはjavascriptに出力される文字列です):

if (i == 0)
{
   sx += "SearchAutocomplete['"+ s.Key + "'] = {};";
}
sx += "SearchAutocomplete['" + s.Key + "'][" + i + "] = '" + s.Value + "';";

(上記はC#コードですが、エラーはjavascript部分です)。

私の目標は、この巨大なオブジェクトを使用して、列名に基づいて JQuery UI の autocomplete() 関数内に配置することです...

http://jqueryui.com/demos/autocomplete/

htmltable += sx + "$('#mySearchBox').autocomplete({" +
                "source: jQuery.makeArray(SearchAutocomplete['" + columnName + "'])" +
                "});"

jQuery.makeArray を使ってみたのですが、何を試しても SearchAutocomplete['columnName'] を値の配列として認識しません。

オートコンプリートが機能しません。

解決策は、何らかの形でループしてオブジェクトを配列に変換することだと思います。しかし、もっと簡単な方法はありますか?

#1 の修正を試みます。

if(list_fields.ContainsKey(s.Key)){
   if (i == 0)
   {
      sx += "SearchAutocomplete['"+ s.Key + "'] = [];";
   }
   sx += "SearchAutocomplete['" + s.Key + "'].push('" + s.Value + "');";
 }
4

1 に答える 1

1

たぶん、この変更を試してください:

//Outside your loop:
sx += "SearchAutocomplete['" + s.Key + "'] = [];";
//... Inside your loop:
sx += "SearchAutocomplete['" + s.Key + "'].push('" + s.Value + "');";

その方法SearchAutocomplete[columnName]は、開始するネイティブ配列です。

于 2012-09-18T19:31:30.573 に答える