2012-07-25 72 views
1

我想向我的cfgrid添加搜索功能。但是我得到了「元素名稱在FORM中未定義」錯誤。第一次加載頁面時,它會顯示網格。但是當我按下搜索按鈕後,發生錯誤。下面是代碼:元素未定義的錯誤

<form name="DropDown" method="post"> 
    <!--- query DB for the first drop down list ---> 
    <cfquery name="Getprocedures" datasource="caselogs"> 
     SELECT distinct procedures.procedure_name, procedures.procedure_id 
     FROM case_logs inner join procedures 
        on procedures.procedure_id=case_logs.procedure_id 
     WHERE case_logs.trainee_id=#form.name# 
    </cfquery> 


    <cfform action="#cgi.script_name#" method="post"> 
     <select name="Ddl_form" size="1"> 
     <cfoutput query="Getprocedures"> 
      <option value="#procedure_id#" <cfif isDefined('form.Ddl_form')> <cfif form.Ddl_form eq "#procedure_id#">selected</cfif> </cfif>> #procedure_name#</option> 
     </cfoutput> 
     </select> 

     Status 
     <select name="Ddl_status" size="1"> 
      <option value="P"<cfif isDefined('form.Ddl_status')> <cfif form.Ddl_status eq "P">selected</cfif> </cfif>>In Progress</option> 
      <option value="S"<cfif isDefined('form.Ddl_status')> <cfif form.Ddl_status eq "S">selected</cfif> </cfif>>Submitted</option> 
      <option value="R"<cfif isDefined('form.Ddl_status')> <cfif form.Ddl_status eq "R">selected</cfif> </cfif>>Reviewed</option> 
      <option value="-1" <cfif isDefined('form.Ddl_status')> <cfif form.Ddl_status eq "-1">selected </cfif> </cfif>>All</option> 
     </select> 
     <input type="submit" name="search" value="Search"> 
    </cfform> 

    <cfif isdefined('form.search')> 
      <cfquery name="qGetBooks" datasource="caselogs"> 
       SELECT CASE_LOGS.performed_dt,CASE_LOGS.submitted_dt,procedures.procedure_name,hospitals.hospital_code,case_logs.status 
       FROM case_logs 
         inner join procedures on procedures.procedure_id = case_logs.procedure_id 
         inner join hospitals on hospitals.hospital_id = case_logs.hospital_id 
       WHERE case_logs.trainee_id=2 and case_logs.status='#Form.Ddl_status#' and case_logs.procedure_id=#FORM.Ddl_form# 
     </cfquery> 
    <cfelse> 
      <cfquery name="qGetBooks" datasource="caselogs"> 
       SELECT CASE_LOGS.performed_dt,CASE_LOGS.submitted_dt,procedures.procedure_name,hospitals.hospital_code,case_logs.status 
       FROM case_logs 
         inner join procedures on procedures.procedure_id = case_logs.procedure_id 
         inner join hospitals on hospitals.hospital_id = case_logs.hospital_id 
       WHERE case_logs.trainee_id=2 and case_logs.status='P' 
      </cfquery> 
    </cfif> 

    <cfform name="gridform"> 
      <cfgrid name="BooksGrid" 
       format="HTML" 
       selectmode="row" 
       query="qGetBooks" 
       title="Students" 
       insert="true" 
       insertbutton="Insert Book" 
       width="500"> 
       <cfgridcolumn name="performed_dt" header="DatePerformed" /> 
       <cfgridcolumn name="submitted_dt" header="SubmitedDate" /> 
       <cfgridcolumn name="procedure_name" header="Procedure" /> 
       <cfgridcolumn name="hospital_code" header="Hospital" /> 
       <cfgridcolumn name="status" header="Status" /> 
      </cfgrid> 
    </cfform> 

以下是錯誤:

The error occurred in C:/ColdFusion10/cfusion/wwwroot/Caselogs/Trainee/caselogs.cfm: line  10 

    8 :  select distinct procedures.procedure_name, procedures.procedure_id from case_logs 
    9 :  inner join procedures on procedures.procedure_id=case_logs.procedure_id 
10 :  where case_logs.trainee_id=#form.name# 
11 : </cfquery> 
12 : 
+0

無關,與你的錯誤,但考慮合併兩個'qGetBooks '查詢,並使'WHERE'子句動態化。這樣你就不必複製整個'SELECT'語句。 – Leigh 2012-08-24 02:06:20

回答

1

在你的搜索,你不是沿着通過name元素,只是將其添加爲一個隱藏的元素的搜索形式:

<input type="hidden" name="name" value="#form.name#"> 
4

你需要或者cfparam形成場,或除非表單已經提交不運行搜索。第一次加載頁面時,FORM.NAME字段不存在,因爲表單尚未提交。試試這個:

<cfparam name="FORM.name" default="0" /> 
<cfset FORM.Name = Val(FORM.Name) /> 

這將確保FORM.name值存在,並且它是一個數值。您還應該在SQL語句中使用cfqueryparam以確保您沒有任何SQL注入漏洞。