代码之家  ›  专栏  ›  技术社区  ›  marc esher

如何在ColdFusion 9 ExtJS网格列上设置typeahead=true?

  •  2
  • marc esher  · 技术社区  · 15 年前

    在cf9上,具有type=“comboBox”的cfgridColumn在基础javascript中将“typeahead”设置为false。排字是组合框的自动完成效果,您可以在“light”列中看到: http://www.extjs.com/deploy/dev/examples/grid/edit-grid.html

    我想知道如何使用coldfusion 9和cfgrid/cfgridcolumn以及相关的coldfusion.grid函数将这种预装功能添加到基于extjs的网格中。

    谢谢你的指导。

    1 回复  |  直到 15 年前
        1
  •  3
  •   marc esher    15 年前

    以下是如何:

    您创建的JS函数如下所示:

        function formatGrid(){
        var grid = ColdFusion.Grid.getGridObject("configgrid");
        var colModel = grid.getColumnModel();
    
        colModel.setRenderer(1,function(value, p, record, rowIndex, colIndex){
            var val = "";
            var editor = colModel.getCellEditor(colIndex,rowIndex);
            Ext.apply(editor.field,{typeAhead:true,editable:true});
            return value;
        });     
    
    }
    

    在setrenderer调用中,“1”表示要修改的列的从零开始的索引。如果有多个组合框列,则可以轻松地提取此函数,使其更通用,并接受列模型和列索引。

    然后,要调用函数,可以在cf8上使用

    <cfset ajaxOnLoad("formatGrid")>
    

    在cf9上,您可以使用cfgrid标记的onload属性,并将其设置为“formatgrid”(或您希望调用函数的任何内容)。

    值得一提的是,在观看了Cutter在CF9/Ajax上的演示后,我终于看到了曙光: http://experts.na3.acrobat.com/p62805180/

    这给了我将渲染器应用到列模型所需的东西。然后,我在源代码中查找coldfusion为列模型创建的内容,并在下拉字段中看到“editable:false”。打开“可编辑”:打开“真”,这是为实现“提前排字:真的工作”而丢失的部分。