Логический столбец 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