Любой способ отфильтровать GridView на лету с помощью ввода текста? - PullRequest
2 голосов
/ 29 февраля 2012

Получил сайт ASP.NET, поддерживаемый C #. Это внутренняя страница, которая показывает, на каких физических серверах работают наши виртуальные машины. Список довольно длинный, поэтому я хочу иметь возможность фильтровать список, когда пользователь вводит текстовое поле. Например, скажем, у нас есть три сервера с именами «Техас», «Нью-Йорк» и «Невада». Если пользователь вводит букву «n» в указанное текстовое поле, список (предпочтительно на стороне клиента, без обратной передачи) удалит техас из списка. Кроме того, когда пользователь доходит до ввода «nev», newyork тоже отфильтровывается, оставляя нас просто с «nevada».

Я не верю, что такая функциональность существует для GridView по умолчанию. По крайней мере, я ничего не могу найти об этом, кроме веб-формы.

Альтернативное решение «ну, я думаю, это работает», о котором я могу подумать, так как это внутренний сайт и страница будет использоваться, возможно, не чаще, чем пару раз в неделю, - это отправлять обратно при вводе текста и выбрасывать частично ввести строку в базу данных и заново связать таблицу на основе возвращенных результатов. Так что к тому времени, как мы набрали «nev», мы сделали 3 постбэка и 3 запроса к базе данных. Я вполне уверен, что это будет легко осуществить, и, поскольку это полностью интранет-сайт с базовыми и не требующими безопасности требованиями, которыми пользуется лишь горстка людей, мне не нужно беспокоиться о том, что кто-то просто ударит по клавиатуре, чтобы преднамеренно попробовать и вызвать сервер миллиард раз. Я понимаю, что это ужасная идея в реальном сценарии открытого мира, но для наших нужд я не вижу в этом проблемы.

Я открыт для любого решения, которое поможет мне достичь того же эффекта, даже если это что-то отличное от GridView.

Ответы [ 2 ]

1 голос
/ 29 февраля 2012

Я только что натолкнулся на пример этого в Rx (Reactive Extensions). Он использует .Throttle (), чтобы предотвратить публикацию при каждом нажатии клавиши. Таким образом, вы можете регулировать скорость обновления каждую секунду или даже чаще. Полный пример - упражнение 5 на стр. 18 в этом уроке PDF, http://go.microsoft.com/fwlink/?LinkId=208528. ( Rx домашняя страница )

Это слишком много, чтобы скопировать и вставить здесь, но учебник имеет полный пример. Суть в том, что каждое нажатие клавиши обрабатывается как «последовательность». Каждый элемент в последовательности затем обрабатывается событием. В вашем случае действие, выполняемое с каждым изменением, будет отфильтровывать GridView на основе текущего значения текстового поля (и опять же Throttle () будет ключом к тому, чтобы быстрые печатные машины не обновляли его слишком часто.

Что касается отправки сообщений каждый раз, я бы использовал AJAX.NET в этой ситуации, чтобы создать более плавный пользовательский интерфейс. AJAX может выполнить обратную передачу на сервер для получения новых данных и т. Д., Но без обновления всей страницы пользователя. Это было бы идеально. Есть несколько простых учебников по AJAX.NET. Есть только несколько элементов управления пользовательским интерфейсом, поэтому это не займет много времени, чтобы почувствовать его.

Редактировать: Если мини-постбэки с ajax.net недостаточно быстрые, rx работает и с клиентским javascript. http://channel9.msdn.com/Blogs/Charles/Introducing-RxJS-Reactive-Extensions-for-JavaScript

0 голосов
/ 29 февраля 2012

Твоя переменность звучит как путь ко мне. Вместо каждого запроса в Maby есть небольшая кнопка обновления, чтобы отправить запрос и обновить вид сетки. Если это просто бэкэнд, я не вижу в этом проблемы.

Извините, я не мог больше помочь.

...