Coldfusion cfgrid布尔列为是/否

Coldfusion cfgrid布尔列为是/否,coldfusion,boolean,cfgrid,cfgridcolumn,Coldfusion,Boolean,Cfgrid,Cfgridcolumn,我在html cfgrid中有一个布尔型列。数据以1/0的形式存储在数据库中,并从CF返回。我希望用户看到的是/否,而不是1/0。我试过QuerySetCell,但没能让它工作 表单是可编辑的,当您双击单元格时,将显示复选框,并按其应做的更新。唯一的问题是显示器 <cfform> <cfgrid name="blah" format="html" bind="mycfccall" selectmode="edit"> <cfgridcolumn n

我在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>


提前感谢…

您需要应用自定义字段渲染器。您需要在页面中添加init()js函数以及呈现器方法。我有在我的博客上应用自定义渲染器的基本过程:

基本上,在网格最初呈现后,您将使用ajaxOnLoad()方法调用init()方法:

您还需要可以应用于任何列的渲染器方法:

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组件都在幕后使用Ext1.1。仔细阅读上的Adobe文档,记住您可以访问底层。

我认为在数据库查询中使用Decode会更容易:

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

对不起,我不知道,但最后一行。。设置渲染器。。。etc应该是gridCM.setRenderer。。在init函数中创建的Var?那么,我应该把这条线放在哪里?在init函数中?有什么特别的功能吗?提前感谢,这已经是一个巨大的帮助。您完全正确,setRenderer()是ColumnModel的一部分,在gridCM上被调用。是的,你可以把它放在init()方法中。
gridCM.setRenderer(cm.getIndexById('myColumnName'), yesNoRenderer);
Decode(bitCol,1,'Yes','No') bitCol