0

我有一个页面,允许用户检查他们想要更新的字段并点击保存。我在页面上有以下代码,可以通过选中复选框来完成多个更新。

<cfif isDefined("form.update")> 
    <cfset list1=#form.vselection#>

    <cfif isDefined("form.vselection") and listlen(form.vSelection) gt 0>
        <cfset vempID = #UCase(Right(cgi.remote_user,6))#> 
        <cfloop index="i" from="1" to="#listlen(form.vselection)#">
        <cfset vSelectedval = Listgetat(form.vselection,i)>
        <cfset v_position_id = Listgetat(form.vpostn,vselectedval)>
        <cfset v_sched_grp = Listgetat(form.vschgrp,vSelectedval)>
        <cfset v_accr_prof = Listgetat(form.vaccprof,vSelectedval)>
        <cfset v_pay_rule = Listgetat(form.vpayrul,vSelectedval)>       
        <cfset v_rest_days = Listgetat(form.vrestdays,vSelectedval)>                

        <!--- This is the update query --->
        <cfquery name="updpostn" datasource="mbtran">
            UPDATE KRONOS_IF.POSITION_DETAIL
            SET schedule_group  = '#v_sched_grp#',
                accrual_profile = '#v_accr_prof#',
                pay_rule_name = '#v_pay_rule#',
                rest_days = '#v_rest_days#'
            WHERE position_id = '#v_position_id#'
        </cfquery>               
        </cfloop>
    </cfif>
</cfif>

我收到 Invalid list index 1004 错误。我无法解决这个问题。请建议此代码有什么问题。

4

2 回答 2

1

如果 form.vselection 是一堆复选框,那么空列表元素应该不是问题。但是,让我们看看这三行。

    <cfloop index="i" from="1" to="#listlen(form.vselection)#">
    <cfset vSelectedval = Listgetat(form.vselection,i)>
    <cfset v_position_id = Listgetat(form.vpostn,vselectedval)>

我们还假设 form.vselection 的第一个元素是 1004。下一个命令是查找 form.vpostn 的第 1004 个元素。很可能表单字段是 1 个元素的列表,而不是 1004。

那就是问题所在。如果您需要帮助解决问题,请告诉我们。

于 2013-03-13T17:47:22.337 回答
0

我建议将您的列表转换为数组以查找值。比listGetAt我认为的更简洁的代码。

<cfset list1 = listtoarray(form.vselection,',',true)>//use true to include empty rows for blank list items

<cfif structKeyExists(form,'vselection') and NOT arrayIsEmpty(list1)>
    <cfset vempID = UCase(Right(cgi.remote_user,6))> 
    <cfloop index="i" from="1" to="#listlen(form.vselection)#">
        <cfset vSelectedval = list1[i]>
    </cfloop>
</cfif>
于 2013-03-13T21:21:37.170 回答