Вы не можете только предположить, что пространство +, и замените его?
Request.QueryString["VLTrap"].Replace(" ", "+");
;)
Я не думаю, что возможно создать индекс для поля поиска. Тем не менее, можно создать индекс для внутреннего вычисляемого поля ClientDataSet. В обработчике событий OnCalcFields установите его значение равным значению поля поиска. И установите для свойства visible поля подстановки значение false. Теперь вы можете выполнить сортировку по внутреннему вычисляемому полю.
Что вы могли бы сделать (особенно если данные доступны только для чтения и не имеет миллиардов строк) используется ClientDataSet для отображения данных в вашей сетке.
Примерно шаги будут примерно такими:
- jeroen
Вы не можете сортировать по полю поиска. Но вы можете подделать это. Предположим, у вас есть следующие таблицы: (PK означает первичный ключ)
Затем вы можете иметь следующий запрос в наборе данных, который связан с 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. Повторно открываем запрос и все. На практике это намного проще, чем мое описание здесь.