3

非常に単純なCFGRID (CFGRIDUPDATE を使用) を使用しようとしていますが、NULL は使用できません。

<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"> 

私が得ているエラーは -エラー診断:複雑なオブジェクト型は単純な値に変換できません。式は変数または中間式の結果を単純な値として要求しました。ただし、結果を単純な値に変換することはできません。単純な値は、文字列、数値、ブール値、および日付/時刻値です。クエリ、配列、および COM オブジェクトは、複雑な値の例です。エラーの原因として最も可能性が高いのは、複雑な値を単純な値として使用しようとしたことです。たとえば、cfif タグでクエリ変数を使用しようとしました。

私はこの望ましい解決策を考えていると思います。

ありがとう。

編集:更新されたエラーメッセージ

エラー診断: エレメント MYURL が FROM で定義されていません。

Form scope - struct

FIELDNAMES  GRIDENTERED,__CFGRID__CFFORM_1__GRIDSOMETHING
GRIDENTERED Submit Query
GRIDSOMETHING.MYID  Form scope - array 
1   1001 

GRIDSOMETHING.MYURL Form scope - array 
1   /test_d.cfm 

GRIDSOMETHING.ORIGINAL.MYID Form scope - array 
1   1001 

GRIDSOMETHING.ORIGINAL.MYURL    Form scope - array 
1   /changed.cfm 

GRIDSOMETHING.ROWSTATUS.ACTION  Form scope - array 
1   U 

__CFGRID__CFFORM_1__GRIDSOMETHING   __CFGRID__EDIT__=2 MYID Y MYURL Y 1 U 1001 1001 /test_d.cfm /changed.cfm 
4

2 に答える 2

3

FORMグリッドは、標準フィールドとは異なる働きをします。グリッドには複数行のデータが含まれているため、CF は新しい/変更された値の配列を作成します。グリッド列ごとに 1 つ、つまり

     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>
于 2012-12-27T21:40:35.877 に答える