首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cfgridupdate标记找不到名为doclist的网格。

cfgridupdate标记找不到名为doclist的网格。
EN

Stack Overflow用户
提问于 2022-09-20 19:42:49
回答 1查看 49关注 0票数 0

下面是关于创建可编辑的cfgrid:CFGRID指南的指南。

但是,我遇到了一个错误,它说cfgridupdate无法找到gridname docgrid,但我看不出这是在哪里引起的。我有一个名为handle_grid.cfm的页面,它将运行两个查询中的一个来更新数据。有人能发现我在这里可能失去了什么吗?

Master_Doc_Maint.cfm

代码语言:javascript
复制
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<!-- Importing jquery libraries -->
<title>Master List Maintenance</title>
<!--- Make sure the person running is an admin. --->
<cfif NOT listfindnocase(application.admins,application.wsl_cdsid)>
Sorry. You are not listed as an admin.
  <cfabort>
</cfif>


<!--- Get all the data from the database. --->
<cfquery datasource="mydatastore name="get_all_docs">
SELECT SITE,SECTIONS,TAB,DOC_NUMBER,DESCRIPTION,REV_LEVEL,REVISION_DATE,REVIEW_DATE,ADMIN,ACTIVE from MDL_MASTER_LIST 
   ORDER BY SITE,sections,TAB,DOC_NUMBER
</cfquery>

<cfform name="docgrid" action="handle_grid.cfm" > <!-- calls the handle program to process the changed data --> 

<cfgrid name="doclist" align="Top" autowidth="yes" bgcolor="FFF" colheaderbold="yes" selectmode="edit"
 format="html" griddataalign="left" gridlines="yes" query="get_all_docs" sort="yes" striperowcolor="FC6" striperows="yes"
 width=1650  insert="Yes" delete="yes">

<cfgridcolumn name="Site" width="100">
<cfgridcolumn name="Sections" width="100">
<cfgridcolumn name="Doc_Number" width="100" select="No">
<cfgridcolumn name="Description" width="300">
<cfgridcolumn name="Rev_Level" width="100">
<cfgridcolumn name="Revision_Date" width="100">
<cfgridcolumn name="Review_Date" width="100">
<cfgridcolumn name="Admin" width="100">
<cfgridcolumn name="Active" width="100">

</cfgrid>
<br>
<cfinput name="UpdateDocs" type="Submit" value="Update">

</cfform>

<cfgridupdate grid="doclist"
datasource="mydatastore"
tablename="MDL_MASTER_LIST">

Click <a href="Master_Doc_Maint.cfm">here</a> to display updated grid.

</head>

<body>

</body>
</html>

handle_grid.cfm

代码语言:javascript
复制
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Master List Maintenance</title>
</head>
<!--- Make sure the person running is an admin. --->
<cfif NOT listfindnocase(application.admins,application.wsl_cdsid)>
Sorry. You are not listed as an admin.
  <cfabort>
</cfif>
<body>

<h3>Grid values for Form.firstgrid row updates</h3>

<cfif isdefined("Form.docgrid.rowstatus.action") is True>

<cfloop index = "counter" from = "1" to =
#arraylen(Form.docgrid.rowstatus.action)#>

<cfoutput>
The row action for #counter# is:
#Form.docgrid.rowstatus.action[counter]#
<br>
</cfoutput>

<cfswitch expression="#Form.docgrid.rowstatus.action[counter]#">
<cfcase value = "U">
<cfquery name="query_insert" datasource="mydatastore">
UPDATE MDL_MASTER_LIST
SET
    active = <cfqueryparam value = '#form.docgrid.active[counter]#' CFSQLType="CF_SQL_VARCHAR">,
    admin = <cfqueryparam value = '#form.docgrid.admin[counter]#' CFSQLType="CF_SQL_VARCHAR">,
    description = <cfqueryparam value = '#form.docgrid.description[counter]#' CFSQLType="CF_SQL_VARCHAR">,
    doc_number = <cfqueryparam value = '#form.docgrid.doc_number[counter]#' CFSQLType="CF_SQL_VARCHAR">,
    is_contact = <cfqueryparam value = #form.docgrid.is_contact[counter]# CFSQLType="CF_SQL_VARCHAR">,
    is_file = <cfqueryparam value = #form.docgrid.is_file[counter]# CFSQLType="CF_SQL_VARCHAR">,
    review_date = <cfqueryparam value = #createodbcdate(form.docgrid.review_date[counter])# CFSQLType="CF_SQL_DATE">,
    revision_date = <cfqueryparam value = #createodbcdate(form.docgrid.revision_date[counter])# CFSQLType="CF_SQL_DATE">,
    rev_level = <cfqueryparam value = '#form.docgrid.rev_level[counter]#' CFSQLType="CF_SQL_VARCHAR">,
    sections = <cfqueryparam value = '#form.docgrid.sections[counter]#' CFSQLType="CF_SQL_VARCHAR">,
    site = <cfqueryparam value = '#form.docgrid.site[counter]#' CFSQLType="CF_SQL_VARCHAR">,
    tab = <cfqueryparam value = '#form.docgrid.tab[counter]#' CFSQLType="CF_SQL_VARCHAR">
WHERE doc_number = <cfqueryparam value = '#form.docgrid.original.doc_number[counter]#' CFSQLType="CF_SQL_VARCHAR">
</cfquery>
</cfcase>
<cfcase value ="D">
         <cfquery name="query_delete" datasource="mydatastore">
            DELETE FROM MDL_MASTER_LIST WHERE doc_number = <cfqueryparam value = '#form.docgrid.original.doc_number[counter]#' CFSQLType="CF_SQL_VARCHAR">
         </cfquery>
      </cfcase>'
      </cfswitch>
</cfloop>
</cfif>

Click <a href="Master_Doc_Maint.cfm">here</a> to display updated grid.

</body>
</html>
EN

回答 1

Stack Overflow用户

发布于 2022-09-21 18:20:55

在指向CFGRID文档的链接中

在“创建可编辑网格”下:

将网格编辑传递到包含cfgridupdate标记的页面,该页自动提取表单变量值并直接将该数据传递给数据源。使用cfquery标记可以使您完全控制与数据源的交互。cfgridupdate标记为不需要相同级别控制的操作提供了一个简单得多的接口。

这似乎表明,cfgridupdate语句应该在与cfgrid分开的页面上。您应该有带有网格的页面,编辑将用cfgridupdate发布到页面上。你把它们放在同一页上。

为了重申Adam的评论,与现代UI库相比,CFGRID和其他CF控件都是垃圾。如果这是新代码,我建议将此网格替换为以下内容之一:

更新:

https://helpx.adobe.com/coldfusion/cfml-reference/coldfusion-tags/tags-g-h/cfgridupdate.html

这里有一个示例,它显示了在使用cfgridupdate之前的条件检查。

代码语言:javascript
复制
<!--- If the gridEntered form field exists, the form was submitted. Perform gridupdate. ---> 
<cfif IsDefined("form.gridEntered") is True> 
    <cfgridupdate grid = "FirstGrid" 
        dataSource = "cfdocexamples" Keyonly="true" 
        tableName = "CourseList"> 
</cfif> 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73791869

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档