Coldfusion过滤器用于姓氏上的网格,不允许收集记录

时间:2017-09-21 13:50:27

标签: java mysql coldfusion

我有一个coldfusion网页,它使用过滤器动态显示cfgrid上的数据。我绑定数据并显示cfc文件中的两个函数。下面是使用绑定方法的主文件中的代码:

<cfform name="postServices" method="post" action="inService02list_v2.cfm?post=1" >

<label>Last Name Search: </label><cfinput type="text" name="filter" id="filter" width="200;" style="border-color:##F60; border-width:medium;" />

    <cfgrid name="SelectStuff" format="html" width="785" height="450" selectmode="edit" bind="cfc:_listings.getStudentData({cfgridpage},{cfgridpagesize},{cfgridsortcolumn},{cfgridsortdirection},{filter@keyup})" bindonload="true" onchange="cfc:_listings.editF({cfgridaction},{cfgridrow},{cfgridchanged})">

     <cfgridcolumn name="GUID" header="Select"  type="boolean"
                        values="1" display="yes" select="yes">
<cfgridcolumn name="INSERT_ID" header="GUID" width="80" select="no">

<cfgridcolumn name="STU_LAST" header="Last" width="100" select="no">
<cfgridcolumn name="STU_FIRST" header="First" width="80" select="no" >
 <cfgridcolumn name="STU_MIDDLE" header="Middle" width="40" select="no" >
   <cfgridcolumn name="CAMPUS" header="Campus" width="120" select="no" >
  <cfgridcolumn name="GRADE" header="Grade Level" width="100" select="no"> 

  </cfgrid>
</cfform>

以下是cfc文件中的方法:

<cfcomponent>

<!--- Function to display filtered data --->

    <cffunction name="editF" access="remote" output="true" returntype="Any"> 
        <cfargument name="gridaction" type="string" required="yes"> 
       <cfargument name="gridrow" type="struct" required="yes"> 
       <cfargument name="gridchanged" type="struct" required="yes"> 
       <!--- Local variables ---> 
       <cfset var value=""> 
       <!--- Process gridaction ---> 
       <cfswitch expression="#ARGUMENTS.gridaction#"> 


     <!--- Process updates ---> 
          <cfcase value="U"> 
             <!--- Get column name and value ---> 
             <cfset colname=StructKeyList(ARGUMENTS.gridchanged)> 
             <cfset value=ARGUMENTS.gridchanged[colname]> 

          </cfcase> 
       </cfswitch> 
    </cffunction>

<!--- FUNCTION TO FILTER GRID --->    

<cffunction name="getstudentdata" access="remote" output="false" returntype="Any"> 
<cfargument name="page" required="false" default="1" type="Numeric" /> 
<cfargument name="pagesize" required="false"
default="1000" type="Numeric" /> 
<cfargument name="sortcolumn" required="false" default="" type="string" /> 
<cfargument name="sortdir" required="false" default="ASC" type="string" /> 
<cfargument name="filter" required="false" default="" type="String" />


<cfstoredproc datasource="DESO_DB" procedure="getStudents">
<cfprocparam cfsqltype="cf_sql_varchar" dbvarname="inSchool" value="#SESSION.auth.campus#">
<cfprocresult name="q">
</cfstoredproc>

<cfset queryAddColumn(q, "INSERT_ID", arrayNew(1))>

<cfloop query="q">
   <cfset querySetCell(q, "INSERT_ID", #GUID#, currentrow)>
</cfloop>

<cfif Len(#arguments.filter#) GTE 2>
 <cfset CapFirst = UCase(left(#arguments.filter#,1)) & Right(#arguments.filter#,Len(#arguments.filter#)-1)>
 <cfelse>
<cfset CapFirst = #arguments.filter#>
</cfif> 

<cfquery name="q" dbtype="query"> 
select * from q 
where STU_LAST like <cfqueryparam cfsqltype="cf_sql_varchar" 
value="%#arguments.filter#%" /> 
OR 
STU_LAST like <cfqueryparam cfsqltype="cf_sql_varchar" 
value="%#UCASE(arguments.filter)#%" /> 
OR 
 STU_LAST like <cfqueryparam cfsqltype="cf_sql_varchar" 
value="%#CapFirst#%" /> 
OR 
STU_LAST like <cfqueryparam cfsqltype="cf_sql_varchar" 
value="%#UCASE(CapFirst)#%" /> 

<cfif len(trim(arguments.sortcolumn))>
            order by #arguments.sortcolumn# #arguments.sortdir#
</cfif>


</cfquery>

<cfreturn queryConvertForGrid(q,'1','1000') /> 

</cffunction> 

</cfcomponent>

我遇到的问题是,我无法将这些记录插入存储到数据库中的数组,我收到一条错误消息:“您试图取消引用类java.lang类型的标量变量。字符串作为具有成员的结构。“下面是抛出此错误的代码行:

<cfif #lookForDupsAttRet.RecordCount# EQ 0 AND #ArrayLen(SELECTSTUFF.INSERT_ID)# NEQ 0>    

<cfloop array="#SELECTSTUFF.INSERT_ID#" index="i">

<cfif #ArrayLen(SELECTSTUFF.INSERT_ID)# EQ 0> 

在添加过滤器之前,您可以选择所需的记录并提交给数据库。 cfgrid使用的是查询而不是具有绑定的数据。也许有人在这里可以帮助指导我如何将这些记录插入到数据库中,同时仍然使用过滤器来查找学生姓氏。

谢谢,

0 个答案:

没有答案