将记录拉入表单时,cfselect 有重复的选项

cfselect has duplicate options when pulling a record into a form

我正在尝试在我的编辑屏幕上获取表单以提取所选记录中的内容,并添加仍然可用但不包括所选内容的选项。因此,如果当前记录的 ROC_Group 为 3,则下拉列表已选择 3,以及 4 和 5 作为选项。这是我所能得到的最接近的结果,但最终以记录 (3) 中当前的内容以及 3,4 和 5 作为选项结束。所以看起来下拉列表中有重复项。有什么建议么?谢谢

<cfselect name="ROC_GROUP"  ><cfoutput query="GetSiteNotoUpdate">   
            <cfif GetSiteNotoUpdate.ROC_GROUP is "#ROC_GROUP#">
                <option value="#ROC_GROUP#" selected="yes">#ROC_GROUP#</option>
                <option>3</option><option>4</option><option>5</option>
        <cfelse>
                <option value="#ROC_GROUP#">#ROC_GROUP#</option>    
        </cfif>     
        </cfoutput></cfselect>

<cfif GetSiteNotoUpdate.ROC_GROUP is "#ROC_GROUP#">

您的比较使用两个变量,都命名为 ROC_GROUP。如果第二个引用与 GetSiteNotoUpdate.ROC_GROUP 不同的变量,则需要限定它的范围。否则,CF 将不知道您指的是哪一个,并且可能会将上面的内容解释为 <cfif someQueryVariable equals itself>,这总是正确的。

只需将 "currently selected" 值放入一个单独的变量中,如 CurrentlySelectedGroup。然后将它与循环内查询中的每个值进行比较:

<select name="ROC_GROUP">
   <cfoutput query="GetSiteNotoUpdate"> 
       <option value="#ROC_GROUP#" 
            <cfif GetSiteNotoUpdate.ROC_GROUP eq CurrentlySelectedGroup>selected="yes"</cfif>>  
            #ROC_GROUP#
       </option>
    </cfoutput>
</select>

顺便说一句,由于您没有使用任何额外功能,因此没有必要使用 <cfselect>。只需使用普通的 html <select>.