Coldfusion:简单的cfgridupdate验证
我尝试使用非常简单的CFGRID(带有CFGRIDUPDATE),但不允许空值Coldfusion:简单的cfgridupdate验证,coldfusion,cfgrid,cfgridcolumn,Coldfusion,Cfgrid,Cfgridcolumn,我尝试使用非常简单的CFGRID(带有CFGRIDUPDATE),但不允许空值 <cfset strWarning= ""> <cfif IsDefined("FORM.gridEntered")> <cfif FORM.myName EQ '' OR FORM.myURL EQ ''> <cfset strWarning= "Error: Form fields cannot be blank"> <
<cfset strWarning= "">
<cfif IsDefined("FORM.gridEntered")>
<cfif FORM.myName EQ '' OR FORM.myURL EQ ''>
<cfset strWarning= "Error: Form fields cannot be blank">
<cfelse>
<cfgridupdate grid="gridSomething"
dataSource="qryTSQL" tableName="tblName" keyOnly="Yes">
</cfif>
</cfif>
<cfoutput>#strWarning#</cfoutput><br />
<cfform>
<cfgrid name="gridSomething" query="qryTSQL"
selectMode="Edit" format="HTML">
<cfgridcolumn name = "myID" display="No">
<cfgridcolumn name = "myName">
<cfgridcolumn name = "myURL">
</cfgrid>
<cfinput type="submit" name="gridEntered">
网格的工作方式不同于标准的
表单
字段。由于网格包含多行数据。每个网格柱一个,即
FORM.gridname.columnName
要确定特定列的任何值是否为空,需要循环该列的数组并检查每个值:
<cfset updateCount = arrayLen(FORM.gridSomething.myName) />
<cfloop from="1" to="#updateCount#" index="x">
<cfset nameValue = trim( FORM.gridSomething.myName[x] ) />
<cfset urlValue = trim( FORM.gridSomething.myURL[x]) ) />
<!--- one or both of the values is empty --->
<cfif not len( nameValue ) OR not len( urlValue )>
... empty value found. do something here ....
</cfif>
</cfloop>
... 找到空值。在这里做点什么。。。。
将此函数添加到您的代码中,并调用它,并按如下方式传递表单范围;
在第页或CFC上的工作原理相同!
在简单的网格更新中,使用某些版本的CF清除因空白COL而阻塞的错误
<cffunction name="cleanGridUpdate" >
<cfargument name="FORM" >
<cfloop collection="#FORM#" item="thisOne">
<cftry>
<cfset thisDeep = arrayLen(FORM[thisOne])>
<cfloop index="x" from="1" to="#thisDeep#">
<cfif len(FORM[thisOne][x])lt 1>
<cfset FORM[thisOne][x] = javaCast( "null", 0 )>
</cfif>
</cfloop>
<cfcatch>
<cfset cat=1>
</cfcatch>
</cftry>
</cfloop>
<cfreturn form>
</cffunction>
<cfif isDefined('URL.action') AND URL.action eq 'gridUpdate'>
<cfset cleanGridUpdate(FORM)>
<cfgridupdate grid="#URL.table#" table="#URL.table#" datasource="your_DS"
keyonly="yes" >
</cfif>
<cfform action="##?action=gridUpdate&table=cheesePuffs" method="post">
<cfgrid name='cheesePuffs' format='HTML'/>
<cfinput name="submit" type="submit" value>
</cfform>
关键是找出导致错误的变量。我建议注释掉cfset和cfoutput标记之间的所有内容,然后重新运行页面。如果没有收到错误,请开始逐点取消注释以帮助识别该变量。是否可以添加完整的错误文本(即:从屏幕上复制并粘贴它,并确保在开发环境的CFAdmin中启用了“健壮的异常处理”)。它应该突出显示导致问题的确切线路。我在你发布的代码中看不到任何会产生错误的东西。
<cffunction name="cleanGridUpdate" >
<cfargument name="FORM" >
<cfloop collection="#FORM#" item="thisOne">
<cftry>
<cfset thisDeep = arrayLen(FORM[thisOne])>
<cfloop index="x" from="1" to="#thisDeep#">
<cfif len(FORM[thisOne][x])lt 1>
<cfset FORM[thisOne][x] = javaCast( "null", 0 )>
</cfif>
</cfloop>
<cfcatch>
<cfset cat=1>
</cfcatch>
</cftry>
</cfloop>
<cfreturn form>
</cffunction>
<cfif isDefined('URL.action') AND URL.action eq 'gridUpdate'>
<cfset cleanGridUpdate(FORM)>
<cfgridupdate grid="#URL.table#" table="#URL.table#" datasource="your_DS"
keyonly="yes" >
</cfif>
<cfform action="##?action=gridUpdate&table=cheesePuffs" method="post">
<cfgrid name='cheesePuffs' format='HTML'/>
<cfinput name="submit" type="submit" value>
</cfform>