логический столбец cfgrid как Да / Нет - PullRequest
3 голосов
/ 19 мая 2009

У меня есть столбец логического типа в hfml cfgrid. Данные хранятся в базе данных как 1/0 и возвращаются из CF как таковые. Я хочу, чтобы пользователь видел Да / Нет вместо 1/0. Я попробовал QuerySetCell и не смог заставить его работать.

Форма редактируемая, когда вы дважды щелкаете ячейку, флажки отображаются, и она обновляется, как и должно Единственная проблема - дисплей.

<cfform>
   <cfgrid name="blah" format="html" bind="mycfccall" selectmode="edit">
      <cfgridcolumn name="bitCol" header="Is it" width="75" type="boolean">
   </cfgrid>
</cfform>

Заранее спасибо ...

Ответы [ 2 ]

6 голосов
/ 19 мая 2009

Вам необходимо применить средство визуализации настраиваемого поля. Вам нужно добавить функцию init () js на вашу страницу вместе с методом визуализации. У меня есть базовый процесс применения пользовательского рендерера в моем блоге:

CF8 Ajax Grid: рендеры и события

По сути, вы вызовете ваш метод init () после того, как сетка будет изначально отображена, используя метод ajaxOnLoad ():

<cfset ajaxOnLoad("init") />

В вашем методе init () вы получите ссылку на сетку, и это ColumnModel:

init = function() {
    var myGrid = ColdFusion.Grid.getGridObject('myGridID');
    var gridCM = myGrid.getColumnModel();
    // The rest goes here
}

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

yesNoRenderer = function(value,meta,record,row,column,store) {
    if (value === 1){
        return "Yes";
    } else {
        return "No";
    }
}

После этого вам нужно применить средство визуализации к столбцу по вашему выбору:

gridCM.setRenderer(cm.getIndexById('myColumnName'), yesNoRenderer);

Метод setRenderer принимает индекс столбца (начиная с 0) и функцию, применяемую в качестве средства визуализации. Метод getIndexById () должен работать здесь, но вы должны сначала проверить его, чтобы убедиться, и помните, что регистр важен в JavaScript.

Большинство компонентов CF Ajax используют Ext 1.1 под капотом. Внимательно прочитайте документацию Adobe по функциям JavaScript ColdFusion и помните, что вы можете воспользоваться базовым Ext 1.1 API .

1 голос
/ 21 апреля 2010

Я думаю, что будет проще использовать Decode в запросе к вашей базе данных:

Decode(bitCol,1,'Yes','No') bitCol
...