这在以前的许多版本中都工作得很好。更新到ColdFusion 2016后,cfgrid在尝试将条目的活动状态从2更新为3的单元格时生成错误。
用户更新单元格并按enter,然后刷新网格,并看到他们的更改未存储。来自AJAX记录器的cfdebug错误是cfgridchanged is undefined。对如何在ColdFusion 2016中实现这一点有什么建议吗?
<cfgrid name="modify_pids"
height=525
autowidth="yes"
width=1040
vspace=10
selectmode="edit"
insert="No"
delete="No"
format="html"
selectonload = "no"
striperows = "yes"
selectcolor="CDE6F3"
preservePageOnSort="Yes"
pagesize=100
sort=true
onChange="cfc:functions_pids.updatePID({cfgridaction},{cfgridrow}, {cfgridchanged}, '#getcurruser.uid#')"
bind="cfc:functions_pids.getPIDS({cfgridpage},{cfgridpagesize}, {cfgridsortcolumn},{cfgridsortdirection}, '#mygridsortcolumn#', searchPID(), searchDESC(), searchSTAT(), searchMOQ(), searchCOST(), searchUNIT(), searchMODBY(), searchMODDATE() )">
<cfgridcolumn name="PID_ID"
header="PID"
width=40
headeralign="center"
headerbold="Yes"
select="No">
<cfgridcolumn name="Description"
header="Description"
width=150
headeralign="center"
headerbold="Yes"
select="Yes">
<cfgridcolumn name="Active_Status"
header="Status<br>Active=1,3<br>Inactive=2"
width=35
headeralign="center"
headerbold="Yes"
select="Yes"
display="yes">
<cfgridcolumn name="MOQ"
header="MOQ"
width=20
headeralign="center"
headerbold="Yes"
select="Yes">
<cfgridcolumn name="COST"
header="Cost"
width=40
headeralign="center"
headerbold="Yes"
select="Yes">
<cfgridcolumn name="UNIT"
header="Unit"
width=40
headeralign="center"
headerbold="Yes"
select="Yes">
<cfgridcolumn name="Modify"
header="Modified By"
width=50
headeralign="center"
headerbold="No"
select="No">
<cfgridcolumn name="Modify_Date"
header="Modified Date"
width=60
headeralign="center"
headerbold="Yes"
select="No"
type="date">
<cfgridcolumn name="PID_USED"
header="Inventory<br>Instances"
width=50
headeralign="center"
headerbold="No"
select="No">
<cfgridcolumn name="Inventory_Sum"
header="Inventory<br>Total"
width=50
headeralign="center"
headerbold="No"
select="No">
</cfgrid>来自functions_pids.cfc的部分
<cffunction name="updatePID" access="remote" output="false">
<cfargument name="cfgridaction">
<cfargument name="cfgridrow">
<cfargument name="cfgridchanged">
<cfargument name="getcurruser"> <!--- pass in modified by user id --->
<cfargument name="PID_ID" required="no" type="string" default="" >
<cfset strctKey=StructKeyArray(cfgridchanged) />
<cfset strctVal=StructFindKey(cfgridchanged, strctKey[1]) />
<cfset strctVal=strctVal[1] />
<cfif cfgridaction is "D">
<cfelseif cfgridaction is "U">
<cfquery name="update" datasource="#request.dbname#" username="#request.dbuser#" password="#request.dbpw#">
UPDATE PIDS
SET #strctKey[1]# = '#strctVal.value#',
Modify = '#getcurruser#',
Modify_Date = '#dateformat(CreateODBCDateTime( Now()), "mm/dd/yyyy")#'
WHERE PID_ID = '#cfgridrow.PID_ID#'
</cfquery>
<cfelseif cfgridaction is "I">
</cfif>
<cfreturn />
</cffunction>发布于 2017-09-22 19:44:40
从评论中提升
当此问题发生时,您应用了哪个更新?我知道Adobe几天前刚刚发布了另一个更新--更新5。这个更新包括了一些CFGrid和AJAX功能的变化。Bugs fixed in ColdFusion (2016 release) Update 5
在ColdFusion (2016版本)更新5中修复了
错误
错误ID描述组件CF-4198947 CFGrid脚本选项无法按预期工作。AJAX : UI组件CF-4198855 "C:\ColdFusion2016\cfusion\wwwroot\WEB-INF\classes\macromedia\sqlserverutil\userDefaults.properties“请求导致以下错误消息:访问被拒绝("java.io.FilePermission”cfquery "read")数据库CF-4198854仅显示一项(100%)的片段图无法显示。图表/绘图CF-4198761在Linux操作系统上,cfdocument不会在pdf中生成图表。文档管理: PDF生成CF-4198817 cfquery返回缓存结果,即使cachedafter日期更新为原始缓存查询日期之后的日期,但仍然是过去的日期。数据库: CFQuery CF-4198816对缓存查询结果所做的更改将持久化到缓存中。Database : CFTOKEN CF-4198764第一次加载模板时,模板会显示CFQuery,但第二次刷新时,令牌会消失。核心运行时:会话管理CF-4198589方法通过ajaxproxy调用失败,即使传递了所需的参数。cfinput中的datefield属性不显示该属性的值。CFForm : HTML 4198559当与参数作用域一起使用时,Elvis运算符失败。核心运行时CF-4198513缓存未按预期更新。缓存CF-4195407 cfinput type=“日期字段”会生成无效的HTML代码。CFForm CF-4182090启用沙盒安全后,您将无法连接到SQL Server。安全
https://stackoverflow.com/questions/46209619
复制相似问题