Действительно ли возможно отсортировать TDBGrid на поле поиска?

Вы не можете только предположить, что пространство +, и замените его?

Request.QueryString["VLTrap"].Replace(" ", "+");

;)

10
задан croceldon 2 September 2009 в 14:31
поделиться

3 ответа

Я не думаю, что возможно создать индекс для поля поиска. Тем не менее, можно создать индекс для внутреннего вычисляемого поля ClientDataSet. В обработчике событий OnCalcFields установите его значение равным значению поля поиска. И установите для свойства visible поля подстановки значение false. Теперь вы можете выполнить сортировку по внутреннему вычисляемому полю.

6
ответ дан 4 December 2019 в 01:02
поделиться

Что вы могли бы сделать (особенно если данные доступны только для чтения и не имеет миллиардов строк) используется ClientDataSet для отображения данных в вашей сетке.

Примерно шаги будут примерно такими:

  1. Загрузите данные из вашего обычного в ClientDataSet,
  2. добавьте вычисляемое поле в ClientDataSet, содержащий значение, полученное в результате поиска,
  3. , затем добавьте индекс к рассчитанному
  4. добавить вычисляемое поле в ClientDataSet, которое содержит значение, полученное в результате поиска,
  5. затем добавить индекс к вычисленному
  6. добавить вычисляемое поле в ClientDataSet, которое содержит значение, полученное в результате поиска,
  7. затем добавить индекс к вычисленному поле.

- jeroen

4
ответ дан 4 December 2019 в 01:02
поделиться

Вы не можете сортировать по полю поиска. Но вы можете подделать это. Предположим, у вас есть следующие таблицы: (PK означает первичный ключ)

Контакты

  • ID - Целое число (PK)
  • ИМЯ - Varchar (40)
  • COUNTRYID - Целое число

Страны

  • ID - Целое число (PK)
  • ИМЯ - Varchar (40)

Затем вы можете иметь следующий запрос в наборе данных, который связан с TDBGrid:

SELECT C.ID, C.NAME, C.COUNTRYID, CO.NAME 
FROM CONTACTS C
JOIN COUNTRIES CO ON C.COUNTRYID=CO.ID

(Не проверено, но я думаю, что вы поняли идею)

Также вы можете поместить это в представление.

Затем вы отобразите в своей TDBGrid (в виде столбцов) только ID, NAME и желаемое поле поиска, которое у вас уже есть (позвоните это СТРАНА).

Щелкнув заголовок заголовка, можно изменить запрос, добавив в 4-ю строку ORDER BY. Для конкретного столбца поля поиска (COUNTRYLOOK), вместо использования сопоставления 1: 1 вы можете поместить в 4-ю строку запроса ORDER BY CO.NAME. Повторно открываем запрос и все. На практике это намного проще, чем мое описание здесь.

1
ответ дан 4 December 2019 в 01:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: