0

我一直在摆弄这个并且偶然发现了一个答案,所以我想我会发布它,希望它可以节省其他人一些时间。

在 CF11 上,我的绑定参数如下所示:

<cfset args.bind = 'cfc:data.RecordSelect({cfgridpage},{cfgridpagesize},{cfgridsortcolumn},{cfgridsortdirection},"#DataSelect.tableName#","#DataSelect.dsn#",{gridForm:searchColumn},gridForm:searchBox},"#DataSelect.PKName#","#variables.gridColumnsForGrid#")'>

使用 CF11,它运行得很好,它在 CF2018 上也大体上运行。网格排序、更新、添加新记录和删除记​​录。但我也有一个过滤器下拉列表,当我尝试过滤时,我收到此错误:

未找到元素:“gridColumn|gridHeading|gridDataType|gridMask|tableName|PKName|searchable|dsn” [通过在 URL 参数中添加 'cfdebug' 来启用调试以查看更多信息]

该元素是我传递给 CFC 的列列表。

4

1 回答 1

1

这是解决方案:

<cfset args.bind = 'cfc:data.RecordSelect({cfgridpage},{cfgridpagesize},{cfgridsortcolumn},{cfgridsortdirection},{gridForm:tableName},{gridForm:dsn},{gridForm:searchColumn},{gridForm:searchBox},{gridForm:PKName},{gridForm:gridColumnsForGrid})'>

<cfinput type="hidden" name="tableName" id="tableName" value="#DataSelect.tableName#" />
<cfinput type="hidden" name="dsn" id="dsn" value="#DataSelect.dsn#" />
<cfinput type="hidden" name="PKName" id="PKName" value="#DataSelect.PKName#" />
<cfinput type="hidden" name="gridColumnsForGrid" id="gridColumnsForGrid" value="#variables.gridColumnsForGrid#" />

因此,根据我的经验,这意味着您不能再通过绑定传递非括号元素。也许这就是我一直应该这样做的方式,因为任何一种方式都适用于 CF11。

当然,我知道我们不应该再使用 CFGRID,因为它会导致失望和毁灭……但这是旧代码,我还不能花时间将其转换为 DataTables。:)

于 2019-08-28T13:31:22.110 回答