Не удается запустить автозаполнение jQuery с динамически созданной переменной ASP.net?

Я использую код автозаполнения jQuery в javascript на странице aspx. Код отлично работает, когда данные объявлены в самом скрипте, но когда я передаю переменную из кода программной части в клиентский скрипт, она не работает.

<script type="text/javascript">
 $(function () {

//    var projects = [{value: "jquery", label: "jQuery", desc: "the write less, do more, JavaScript library", icon: "https://fbcdn-profile-a.akamaihd.net/static-ak/rsrc.php/v1/yP/r/FdhqUFlRalU.jpg" },
//                  {
//                    value: "jquery-ui",
//                  label: "jQuery UI",
//                 desc: "the official user interface library for jQuery",
//                 icon: "https://fbcdn-profile-a.akamaihd.net/static-ak/rsrc.php/v1/yP/r/FdhqUFlRalU.jpg"
//                                                  },
//                                                  {
//                                                  value: "sizzlejs",
//                                                  label: "Sizzle JS",
//                                                  desc: "a pure-JavaScript CSS selector engine",
//                                                  icon: "https://fbcdn-profile-a.akamaihd.net/static-ak/rsrc.php/v1/yP/r/FdhqUFlRalU.jpg"
//                                                  }
//                                                 ];
//                                                    
//                 alert(JSVar + JSVar1);

                 $("#Text1").autocomplete({
                     minLength: 0,
                     source: JSVar,
                     focus: function (event, ui) {
                         $("#Text1").val(ui.item.label);
                         return false;
                     }

                 })
                    .data("autocomplete")._renderItem = function (ul, item) {
                        return $("<li></li>")
                            .data("item.autocomplete", item)
                            .append("<a><img src='" + item.icon + "' width='32' height='32' />  " + item.label + "</a>")
                            .appendTo(ul);
                    };


                 $("#Text2").autocomplete({
                     minLength: 0,
                     source: JSVar1,
                     focus: function (event, ui) {
                         $("#Text2").val(ui.item.label);
                         return false;
                     }
                 })
                    .data("autocomplete")._renderItem = function (ul, item) {
                        return $("<li></li>")
                            .data("item.autocomplete", item)
                            .append("<a><img src='" + item.icon + "' width='32' height='32' />  " + item.label + "</a>")
                            .appendTo(ul);
                    };

             });

В выделенном коде мужчины и женщины являются моими основными данными.

   string str1 = "<script type=\"text/javascript\">var JSVar='" + Female + "'; var JSVar1='" + Male + "'; </script>";

    ClientScriptManager script = Page.ClientScript;
    if (!script.IsClientScriptBlockRegistered(this.GetType(), "Var"))
    {
        script.RegisterClientScriptBlock(this.GetType(), "Var", str1.ToString());
    }

Код отлично работает, когда я использую var projects вместо JSVar и JSVar1. Но не тогда, когда я использую JSVar и JSVar1, которые динамически определяются в коде программной части с той же структурой, что и проекты.

ПРИМЕЧАНИЕ. Я могу получить правильные значения для JSVar и JSVar1 внутри скрипта, проверив их с помощью alert() с помощью ClientScriptManager.


person Tani    schedule 20.02.2012    source источник
comment
Как выглядят JSVar и JSVar1?   -  person Andrew Whitaker    schedule 20.02.2012
comment
Как я уже сказал, это то же самое, что и var Projects.. var JSVar = [{ label: "Id1", value:"Name1", icon: "https://facebook.com/me/picture.jpg"}, { label: "Id2", value: "Name2", icon: "https://.... some url" }]   -  person Tani    schedule 21.02.2012


Ответы (1)


Вы проверили, что идентификаторы ClientID текстовых полей соответствуют вашим ожиданиям?

Например, когда вы динамически создаете элементы с помощью PlaceHolder, результирующий ClientID будет выглядеть примерно так: «Placeholder_Text1».

Посмотрите на исходный код страницы в вашем браузере после рендеринга, чтобы проверить. Затем либо скопируйте полный идентификатор в свой селектор jQuery, либо используйте что-то вроде этого

$("#<%=Text1.ClientID%>").autocomplete...
person Sean Lyttle    schedule 21.02.2012
comment
Спасибо, Шон, за ответ... Но это не моя проблема. Я не создаю текстовые поля динамически, а изменяю данные на стороне сервера. Эти данные передаются со стороны сервера на сторону клиента с помощью ClientScriptManager. Теперь я должен добавить эти данные в качестве источника в автозаполнение текстового поля, созданного на стороне клиента. - person Tani; 21.02.2012