1

好的,这里是 CF/AJAX 新手。我正在构建的是一个基本的数据库驱动的库存清单,对于每个项目,它都显示:

  • 类别
  • 库存编号 (ID)
  • 项目名
  • 物品图片
  • 颜色
  • 一个复选框(无论是否有库存 - 默认为“0”)

我正在使用 cflayoutareas 将库存分成可折叠的手风琴,每个类别都在其自己的部分中。目标是有一个简单的清单,当您检查一个项目并更新数据库并保留您在当前手风琴/列表中的位置时,“灰色”每个项目。库存清单可能很长,有 200 多件物品,因此我寻求使用 AJAX 干净地完成这项工作。

我让它半工作,但它非常粗糙,因为它依赖于每次检查的发布/重新加载。我知道有一种简单而优雅的方式来使用 AJAX 进行编码,但我无法从各种 cfajax / bind / etc 示例中将它拼凑在一起。也许jQuery在这里会有所帮助?没有把握。任何建议或方向表示赞赏。

这是我到目前为止的草率版本:

要更新数据库并重新加载列表:

<cfif WhatsChecked NEQ "">
<cftransaction> 
    <cfquery name="UpdateChecks" datasource="#application.dsn#">            
        UPDATE inventorychecklist
        SET Checked = "1"
        WHERE ID IN (<cfqueryparam value="#FORM.WhatsChecked#" cfsqltype="cf_sql_varchar" list="true">)
    </cfquery>      
    <cfquery name="UpdateChecks0" datasource="#application.dsn#">
        UPDATE inventorychecklist
        SET Checked = "0"
        WHERE ID NOT IN (<cfqueryparam value="#FORM.WhatsChecked#" cfsqltype="cf_sql_varchar" list="true">)
    </cfquery>  
</cftransaction>

<cfquery name="LoadInventory" datasource="#application.dsn#">
SELECT * FROM inventorychecklist
WHERE AccountNumber = <cfqueryparam value="#Session.AccountNumber#" CFSQLType="cf_sql_varchar">
order by Category

在正文中形成(发布到自身)以遍历库存(每个类别组)并显示项目/复选框,如果已选中则将 tr 灰显:

<cfform name="MAINFORM" action="checklist.cfm" method="post">
<cflayout name="MainChecklist" type="accordion" width="640">
<cfoutput query="LoadInventory" group="Category">   
    <cflayoutarea title="#Category#, qty:#totalCount#" align="left">
        Category: #Category#"
        <table width="100%" cellpadding="0" cellspacing="0" border="0">         
            <tr>
                <td>stock number (ID)</td>
                <td>item name</td>
                <td>item picture</td>
                <td>color</td>
                <td>in stock?</td>
            </tr>           
            <cfoutput>
            <!--- If item is checked off, gray out the row --->
            <cfif "#LoadInventory.Checked#" EQ 1>
                <tr bgcolor="##333333">
            <cfelse>
                <tr>
            </cfif>
                <td>#ID#</td>
                <td>#LoadInventory.ItemName#</td>
                <td><img src="images/#LoadInventory.Category#/#LoadInventory.Item#.jpg"></td>
                <td>#LoadInventory.Color#</td>
                <td>
                <input type="checkbox" name="WhatsChecked" value="#ID#" <cfif "#LoadInventory.Checked#" EQ 1>checked="checked"</cfif> onclick="this.form.submit();">
                </td>
            </tr>
            </cfoutput>         
        </table>            
    </cflayoutarea>
</cfoutput>

4

0 回答 0