【问题标题】:ColdFusion - Using a cfloop with multiple fields and multiple submit buttonsColdFusion - 使用具有多个字段和多个提交按钮的 cfloop
【发布时间】:2013-02-22 16:26:19
【问题描述】:

我希望使用cfpdfformcfform 中的表单值传递给PDF。这是我的小测试页面,它遍历 50 条记录以提取名字和姓氏。我正在尝试将它们拉入pdf字段。目前,它将所有 50 个名字放入 firstname 字段,并将所有姓氏放入 pdf 的 lastname 字段。我没有与提交按钮结婚,但有什么更好的选择?

在我的最后一次迭代中,我将引入大约 100 个字段。

--形式--

<cfform name="autopdf" method="POST" action="automated_pdf_submit.cfm" enctype="multipart/form-data">
        <h1>Select a state to insert into a PDF form</h1>
        <div class="center">
            <select name="pdfselect" id="pdfselect">
                <option value="" selected>--Select State--</option>                 
                <option value="FROI_NY.pdf">New York</option>
                <option value="FROI_PA.pdf">Pennsylvania</option>
            </select>
            <cfinput type="hidden" name="statevalidate" onValidate="yourFunction" 
                     message="YOU MUST SELECT A STATE TO CONTINUE!">
        </div>
        <table align="center" style="width:400px">
            <tr>
                <th></th>
                <th>First Name</th>
                <th>Last Name</th>
                <th>Export to PDF</th>
            </tr>
            <cfoutput>
            <cfloop query="#qryPersons#" startrow="1" endrow="50" >
                <tr class="#IIf(CurrentRow Mod 2, DE('rowOdd'), DE('rowEven'))#" onmouseover="this.className='rowHighlight'" 
                    <cfif CurrentRow Mod 2>onmouseout="this.className='rowOdd'"
                    <cfelse>onmouseout="this.className='rowEven'"</cfif>>
                        <td>#qryPersons.CurrentRow#</td>
                        <td>#qryPersons.LastName#</td>
                        <input type="hidden" name="FirstName" value="#qryPersons.LastName#">
                        <td>#qryPersons.FirstName#</td>
                        <input type="hidden" name="LastName" value="#qryPersons.FirstName#">
                        <td style="width:50px"><input type="submit" value="Create PDF"</td>
                </tr>
            </cfloop>   
            </cfoutput>
        </table>
</cfform>

--动作--

<cfpdfform action="populate" source="forms\#form.pdfselect#">
    <cfpdfformparam name="FirstName" value="#form.FirstName#">
    <cfpdfformparam name="LastName" value="#form.LastName#">
</cfpdfform>

【问题讨论】:

  • 这里有什么问题?听起来你的问题很有效。
  • @Busches 它将所有名字拉入表单。这是页面和 pdf 的图像:imgur.com/KZ4HEiE,VIjlgDz
  • 啊,那么下面马特的回答会解决你的问题。

标签: coldfusion submit cfform cfpdfform cfloop


【解决方案1】:

您的表单字段都命名为FirstNameLastName,您需要使它们独一无二

<cfloop query="#qryPersons#" startrow="1" endrow="50" >
 <tr class="#IIf(CurrentRow Mod 2, DE('rowOdd'), DE('rowEven'))#" onmouseover="this.className='rowHighlight'" 
  <cfif CurrentRow Mod 2>onmouseout="this.className='rowOdd'"
  <cfelse>onmouseout="this.className='rowEven'"</cfif>>
  <td>#qryPersons.CurrentRow#</td>
  <td>#qryPersons.LastName#</td>
  <input type="hidden" name="FirstName#qryPersons.currentrow#" value="#qryPersons.LastName#">
  <td>#qryPersons.FirstName#</td>
  <input type="hidden" name="LastName#qryPersons.currentrow#" value="#qryPersons.FirstName#">
  <td style="width:50px"><input type="submit" value="Create PDF"</td>
  </tr>
</cfloop> 

我以前从未使用过 cfpdfform,但这种语法应该可以使用。您可能还需要在下面动态命名name 属性

<cfpdfform action="populate" source="forms\#form.pdfselect#">
 <cfloop from="1" to="50" index="i">
    <cfpdfformparam name="FirstName" value="#form['FirstName'&i]#">
    <cfpdfformparam name="LastName" value="#form['LastName'&i]#">
 </cfloop>
</cfpdfform>

【讨论】:

  • 我认为他一次只想传入一个名字,所以他真的应该将表格移动到每个名字周围,这样他就有五十个表格标签。
  • @matt 这不会创建多个 pdf 文件吗?我只想通过我点击的那个。请参阅这两张图片以供参考:imgur.com/KZ4HEiE,VIjlgDz
  • 那么您只需要将循环移到表单之外,这样您的页面上就有 50 个表单域
  • 如果您只想传递其中一个名称,那么您需要重新组织您的表单。最简单的方法是,因为 oyu 需要包含状态,所以每个提交按钮都有一个唯一的名称,所以你只能拉入那个。
  • @DanBracuk 那么你必须在每个表单中包含状态选择。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-24
  • 1970-01-01
  • 2016-01-20
  • 1970-01-01
  • 2013-04-16
  • 1970-01-01
相关资源
最近更新 更多