Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: ASP.NET MVC
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
lifeact
49 / 49 / 12
Регистрация: 24.10.2012
Сообщений: 432
#1

Авто завершение Lisbox + список довольно большой

16.04.2014, 08:27. Просмотров 833. Ответов 5
Метки нет (Все метки)

Всем привет! Ребят есть вот такая задача, подскажите направление, как грамотней реализовать:

В табличке есть авторы (id, autor_name), авторов около сотни (в дальнейшем больше)

необходимо при добавлении записи выбирать автора. Сотню авторов в Lisbox засунуть - извращение....

в идеале человек набирает имя автора и ему авто завершение предлагает варианты, по аналогии с тегами в ворпрессе:
0
Изображения
 
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.04.2014, 08:27
Ответы с готовыми решениями:

Почему результат компиляции маленькой программы на с++ имеет довольно большой размер?
Почему 20 строчек программа после компиляции exe файл занимает пол метра 512...

Как отобразить список программ в автозагрузке через lisbox(listview)?
Как отобразить список программ в автозагрузке через lisbox(listview)?И какой...

Авто-завершение самым последним
Необходимо чтобы при завершении работы моя программа всегда завершалась...

Завершение программы при большой загрузки процессора
Вопрос такой, нужно сделать так: при выполнении программы, если в течении...

RAD studio 10.2 starter не работают подсказки,авто завершение кода, подсветка синтаксиса
Какое-то реально барахло. Ну вчера работала подсветка.точно помню.

5
opeth
0 / 0 / 0
Регистрация: 13.04.2017
16.04.2014, 12:37 #2
Лучший ответ Сообщение было отмечено lifeact как решение

Решение

Use combobox.js https://gist.github.com/BigBlueHat/929478 or Autocomplete http://jqueryui.com/autocomplete/
0
Сергей 83
98 / 96 / 15
Регистрация: 28.03.2011
Сообщений: 565
18.04.2014, 00:55 #3
jquery autocomplete: The datasource is a simple JavaScript array, provided to the widget using the source-option.
- то что я и говорил - нормальный подход
1
lifeact
49 / 49 / 12
Регистрация: 24.10.2012
Сообщений: 432
18.04.2014, 11:22  [ТС] #4
да, вот прямо с бд дергает + автокомплит + кеширование http://jqueryui.com/autocomplete/#remote-jsonp красота

Добавлено через 3 часа 53 минуты
вот что получилось:

представление:

HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
  @Styles.Render("~/Scripts/Aditional/jquery-ui.css")
  <script src="~/Scripts/Aditional/jquery-1.10.2.js"></script>
  <script src="~/Scripts/Aditional/jquery-ui.js"></script>
 
  <style>
  .ui-autocomplete-loading {
    background: white url('../../images/Template/ANIMATIONS/load_16x16.gif') right center no-repeat;
  }
  </style>
 
<script>
    $(function () {
        var cache = {};
        $("#birds").autocomplete({
            minLength: 2,
            source: function (request, response) {
                var term = request.term;
                if (term in cache) {
                    response(cache[term]);
                    return;
                }
                
                    $.getJSON('@Url.Action("AutoCompleteAutor", "Record")', request, function (data, status, xhr) {
                    cache[term] = data;
                    response(data);
                });
            }
        });
    });
  </script>
 
 
 
 
 
                <div class="ui-widget">
                  <label for="birds">Birds: </label>
                  <input id="birds">
                </div>              
        
                      
 
  
 
 
 
 
 
@section Scripts {
    @Scripts.Render("~/bundles/jqueryval")
}
контроллер:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
  //АВТОРЫ
        public JsonResult AutoCompleteAutor(string term)
        {
 
            List<string> result = new List<string>();
 
            result.Add("моцарт");
            result.Add("чехов");
            result.Add("монтиквели");
            result.Add("луиза");
            result.Add("андрющенко");
            result.Add("павловский");
            result.Add("иванов");
            result.Add("синиар");
            result.Add("пифагор");
            result.Add("балданок");
            result.Add("симаков");
            result.Add("чехарда");
            result.Add("молоко");
            result.Add("синоидальный");
            result.Add("парад");
            result.Add("проскрит");
          
 
            return Json(result, JsonRequestBehavior.AllowGet);
        }

В тексбоксе данные появляются, но вываливается весь список.... а автозавершением как в примере (http://jqueryui.com/autocomplete/#remote-with-cache) и не пахнет

по загруженным на странице скриптам вродь все ок
http://joxi.ru/j9FQUxjKTJBsDiOhMaQ

куда копнуть?

Добавлено через 2 минуты
из скрина видно что также загружается jquery-2.1.0.js пробовал его заремить, результат тот же
0
Сергей 83
98 / 96 / 15
Регистрация: 28.03.2011
Сообщений: 565
18.04.2014, 11:28 #5
Данная задача не такая уже и сложная, чтобы привлекать стороннюю библиотеку. Чем больше у вас в проекте кода, которого вы не пониматете, тем хуже.
Это легко написать самому.
0
lifeact
49 / 49 / 12
Регистрация: 24.10.2012
Сообщений: 432
18.04.2014, 14:14  [ТС] #6
Цитата Сообщение от Сергей 83 Посмотреть сообщение
стороннюю библиотеку
какая же это сторонняя если это стандартный джетквери... без него ни туда ни сюда

Добавлено через 2 часа 44 минуты
разобрался, в бизнес логике фильтруются записи:

C#
1
2
3
4
5
6
 //АВТОРЫ
        public JsonResult AutoCompleteAutor(string term)
        {
            var result = recordsManager.FindeAvtors(term);                       
            return Json(result, JsonRequestBehavior.AllowGet);
        }
а кто знает как работает этот кеш?

Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 var cache = {};
        $("#tags").autocomplete({
            minLength: 2,
            source: function (request, response) {
 
                var term = request.term;
                if (term in cache) {
                    response(cache[term]);
                    return;
                }
 
                $.getJSON('@Url.Action("AutoCompleteAutor", "Record")', request, function (data, status, xhr) {
                    cache[term] = data;
                    response(data);
                });
я в фаербаге смотрю там кешем и не пахнет
0
18.04.2014, 14:14
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.04.2014, 14:14

Описать базовый класс автомобиль и от него наследуются классы: грузовые авто, уборочные авто, спортивные авто
Всем привет!:) хочу спросить кто нибудь писал программы с наследованием на...

Есть список авто и список покупок
SELECT , SUM() as FROM .. group by order by 1 В таблицах поля список...

Односвязный список, завершение ввода
Помогите доделать программу чтобы если в начале ввели 0 программа заканчивалась...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru