cfgrid布尔列为是/否

时间:2009-05-19 19:04:35

标签: coldfusion boolean cfgrid cfgridcolumn

我在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 个答案:

答案 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