我在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>
提前致谢...
答案 0 :(得分:6)
您需要应用自定义字段渲染器。您需要向页面添加init()js函数以及渲染器方法。我有在我的博客上应用自定义渲染器的基本过程:
CF8 Ajax Grid: Renderers and Events
基本上,在最初渲染网格后,您将使用ajaxOnLoad()方法调用init()方法:
<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。仔细阅读ColdFusion JavaScript Functions上的Adobe文档,并记住您可以使用基础Ext 1.1 API。
答案 1 :(得分:1)
我认为在数据库查询中使用Decode会更容易:
Decode(bitCol,1,'Yes','No') bitCol