ColdFusion & Ajax: как получить пустую строку в окне выбора - PullRequest
0 голосов
/ 13 октября 2010

У меня есть две коробки cfselect, в которых используются привязки и cfc. Одним из них является государство. Выберите штат, и второй cfselect (графства) заполняется на лету.

До того, как сделать это с атрибутом bind, я использовал атрибут queryPostion = "bottom", такой как следующий, чтобы в основном поместить пустую строку в поле параметров. Теперь я хочу сделать то же самое для полей выбора штата и округа, так как мне бы хотелось, чтобы в каждом из них были значения «» (или значение «ВСЕ»). Я не уверен в обходном пути.

//original... leaves a blank option:
     <cfselect enabled="No" name="search_state" multiple="no" query="get_States" value="StateUSAbb" display="StateName" queryPosition="below">
                      <option></option>
    </cfselect>

  //now, w/bind, doesn't work:


    <cfselect bind="cfc:states.getStates()" bindonload="true" name="search_state" 
                  value="StateUSAbb" display="StateName">    
    </cfselect>

    <cfselect bind="cfc:states.getCounties({search_state})" bindonload="true" name="search_county" value="FIPS_County" display="CountyName" >
    </cfselect>

UPDATE Решение для обоих запросов:

     SELECT DISTINCT tblLoc.StateUSAbb, lkuState.StateName
        FROM lkuState INNER JOIN tblLoc ON lkuState.FIPS_State = tblLoc.FIPS_State
        WHERE (lkuState.StateName <> 'New Brunswick')
        UNION
        SELECT '' AS StateUSAbb, '' AS StateName
        FROM lkuState
        ORDER BY StateName

SELECT '' AS FIPS_COUNTY, '' as CountyName
        FROM lkuCnty
        UNION
        SELECT FIPS_County, CountyName
        FROM lkuCnty
        WHERE StateAbb = '#ARGUMENTS.stateabb#'
        ORDER BY CountyName

Ответы [ 4 ]

2 голосов
/ 13 октября 2010

Самый простой способ, который я выяснил, это вставить пустую (или заполнитель) строку данных в запрос в вашем коде. Что-то вроде:

select "0" as id, "Choose...." as value
union
select id, value from tableName
1 голос
/ 13 октября 2010

Это будет обработано в функции states.cfc getCounties ().Для этого нужно вернуть пустую запись.Отправьте это здесь, если вам нужна дополнительная помощь.

0 голосов
/ 14 октября 2010

Выражение привязки FYI может связываться с функциями, которые возвращают массив объектов в CF9.

В этом случае ArrayPrepend () будет работать так же, как QoQ с UNION ALL.

0 голосов
/ 13 октября 2010

ОБНОВЛЕНИЕ: Неважно. Похоже, то же самое уже предлагалось, когда я отвечал; -)

AFAIK, нет встроенной опции для создания пустых элементов в связанном списке выбора. По крайней мере, не с CF8.

Поскольку привязка заменит содержимое списка, вам потребуется добавить пустые параметры в результаты запроса. Один из методов - добавить пустую опцию в результаты вашего запроса через UNION.

В зависимости от значений списка, либо

SELECT 0 AS SortOrder, '' AS StateUSAbb, '--- ALL ---' AS StateName
UNION ALL
SELECT 1, StateUSAbb, StateName 
FROM   YourTable
WHERE  (some condition ...)
ORDER BY SortOrder ASC

... ИЛИ возможно

SELECT '' AS StateUSAbb, '--- ALL ---' AS StateName
UNION ALL
SELECT StateUSAbb, StateName 
FROM   YourTable
WHERE  (some condition ...)
ORDER BY StateUSAbb

UPDATE Интересно, что разница между использованием UNION и UNION ALL заключается в том, что UNION удаляет дубликаты. СОЮЗ ВСЕХ не имеет. Поскольку запрос UNION немного дороже, я использую его только при необходимости.


Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...