如何检查 cfquery 结果中的复选框

How to check checkbox from cfquery results

我有一个案例需要根据 cfquery 结果选中一个复选框。数据库将 return 1 or 0 ,我认为这会使从那里处理起来非常简单,但我不确定如何将该数据表示为 HTML 复选框。

这是我目前的情况:

<cfquery name="ContainsSic" datasource="#Application.PrimaryDataSource#">
    SELECT HasSiC
    FROM tblAssayResults
    WHERE CustomerID = 838
    AND LotNumber = 15
    AND SubLot = 1
</cfquery>          

    <cfset SicResults = ContainsSic.HasSiC>

<cfoutput>
    <tr>
     <td align="center">#Passed_CustomerName#</td>
     <td align="center">#Passed_LotNumber#</td>
     <td align="center">#Passed_SubLot#</td>
     <td align="center">#Passed_CarbonAvg#</td>
     <td align="center"><input type="button" onclick="" value="Amend" /></td>
     <td align="center"><input type="checkbox" value="#SicResults#"/></td>
     <td align="center"></td>
     <td align="center"><input type="button" onclick=""/></td>
    </tr>
</cfoutput>

基本上,如果我没有正确解释,如果数据库 returns 为 1,那么复选框应该显示为选中的复选框,当然等等。我应该提一下,所有内容都在 cfloop 中,稍后可能会成为一个单独的问题。

即使数据库 return 是 1,我目前也只会得到空复选框。我是否需要包含 cfif 并将 1 return 设为 true

谢谢

例如:

<td align="center"><input type="checkbox" value="#SicResults#" #((SicResults) ? "checked='checked'" : "")# /></td>

我想我会选择今天看到的第一个 post 并尝试帮助有需要的人...

对 CF 了解不多,但我使用过标准 JSP 标记库 JSTL。在该标签库中有一个 foreach 标签,它允许您遍历任何可枚举的输出或 JSP 变量。

  1. 快速检查...您是否尝试过在复选框上设置 checked 属性?

  2. 更深入的思考...

我想知道你能在这里使用 cfloop 应用类似的东西吗?因为我认为 cfquery 标记 returns 是一个可枚举的数据结构,需要迭代以说明查询结果中返回的所有记录。

这是我的伪代码...

<!-- run your query -->
<cfset SicResults = ContainsSic>    
<cfset checkedValue = false>

<cfloop from="0" to="SicResults.recordCount" index="i">
  //not sure on cf tags to complete following...
  if ContainsSic[i].HasSiC === 1
    checkedValue = true
  <cfoutput>
    <tr>
      <td align="center">#Passed_CustomerName#</td>
      <td align="center">#Passed_LotNumber#</td>
      <td align="center">#Passed_SubLot#</td>
      <td align="center">#Passed_CarbonAvg#</td>
      <td align="center"><input type="button" onclick="" value="Amend" /></td> 
      <td align="center"><input type="checkbox" checked="#checkedValue#"/></td>
      <td align="center"></td>
      <td align="center"><input type="button" onclick=""/></td>
    </tr>
  </cfoutput>
</cfloop>

madeyejm 的解决方案存在问题:它会 return checked="false"checked="true" -- 但仅仅是 [= checked 属性的 18=]presence(无论其值如何)将导致选中此框。

我觉得下面的符合你的需求

<cfset SicResults = ContainsSic.HasSiC>
<cfif ContainsSic.HasSiC EQ 1 >
    <cfset CheckedResult = "checked=""checked""" >
<cfelse>
    <cfset CheckedResult = "" >
</cfif>

<cfoutput>
    <tr>
     <td align="center">#Passed_CustomerName#</td>
     <td align="center">#Passed_LotNumber#</td>
     <td align="center">#Passed_SubLot#</td>
     <td align="center">#Passed_CarbonAvg#</td>
     <td align="center"><input type="button" onclick="" value="Amend" /></td>
     <td align="center"><input type="checkbox" value="#SicResults#" #CheckedResult#/></td>
     <td align="center"></td>
     <td align="center"><input type="button" onclick=""/></td>
    </tr>
</cfoutput>