首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cfgrid布尔列为Yes/No

cfgrid布尔列为Yes/No
EN

Stack Overflow用户
提问于 2009-05-19 19:04:35
回答 2查看 1.7K关注 0票数 3

我在html cfgrid中有一个boolean类型的列。数据以1/0的形式存储在数据库中,并从CF返回。我希望用户看到的是Yes/No而不是1/0。我试过QuerySetCell,但不能让它工作。

表单是可编辑的,当您双击单元格时,将显示复选框并根据需要进行更新。唯一的问题是显示器。

代码语言:javascript
复制
<cfform>
   <cfgrid name="blah" format="html" bind="mycfccall" selectmode="edit">
      <cfgridcolumn name="bitCol" header="Is it" width="75" type="boolean">
   </cfgrid>
</cfform>

先谢谢你...

EN

回答 2

Stack Overflow用户

发布于 2009-05-19 19:47:39

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

CF8 Ajax Grid: Renderers and Events

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

代码语言:javascript
复制
<cfset ajaxOnLoad("init") />

在你的init()方法中,你会得到一个对网格的引用,它是ColumnModel:

代码语言:javascript
复制
init = function() {
    var myGrid = ColdFusion.Grid.getGridObject('myGridID');
    var gridCM = myGrid.getColumnModel();
    // The rest goes here
}

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

代码语言:javascript
复制
yesNoRenderer = function(value,meta,record,row,column,store) {
    if (value === 1){
        return "Yes";
    } else {
        return "No";
    }
}

在此之后,您需要将渲染器应用于您选择的列:

代码语言:javascript
复制
gridCM.setRenderer(cm.getIndexById('myColumnName'), yesNoRenderer);

setRenderer方法接受列索引(从0开始)和要作为渲染器应用的函数。getIndexById()方法在这里应该可以工作,但您应该首先测试它以确保无误,并记住大小写在JavaScript中很重要。

大多数CF Ajax组件都在幕后使用Ext1.1。请仔细阅读ColdFusion JavaScript Functions上的Adobe文档,并记住您可以访问底层的Ext 1.1 API

票数 6
EN

Stack Overflow用户

发布于 2010-04-21 19:17:07

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

代码语言:javascript
复制
Decode(bitCol,1,'Yes','No') bitCol
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/884474

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档