Логический столбец cfgrid как Да / Нет

У меня есть столбец логического типа в HTML 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 ответа

Вам нужно применить средство визуализации настраиваемого поля. Вам нужно добавить функцию 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 и помните, что вы можете воспользоваться базовым API Ext 1.1.

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

Decode(bitCol,1,'Yes','No') bitCol
Другие вопросы по тегам