2012-12-27 9 views
1

ColdFusion에 익숙하지 않아 MS Access에서 쉽게 할 수있는 몇 가지 간단한 기능을 수행하는 방법을 파악하는 데 어려움을 겪고 있습니다.드롭 다운 상자를 기반으로 한 CFGRID

다음은 내가 수행하려고 시도한 것입니다. cfgrid 드롭 다운 상자를 기반으로 데이터를 필터링하고 싶습니다. 그런 다음 다른 드롭 다운 상자 (필요한 경우)를 기반으로 해당 데이터를 필터링하십시오.

도움을 주시면 감사하겠습니다.

예 :

<html> 

<!---Grid Source---> 
<cfquery name="getArtists" datasource="cfartgallery"> 
    SELECT A.* 
    FROM ARTISTS A 
    WHERE 
     1=1 
    <cfif structKeyExists(form,'dropdownbox1')> 
     AND STATE like <cfqueryparam value="%#dropdownbox1#%" cfsqltype="CF_SQL_VARCHAR" maxlength="255"> 
     <cfif structKeyExists(form,'dropdownbox2')> 
     AND LASTNAME like <cfqueryparam value="%#dropdownbox2#%" cfsqltype="CF_SQL_VARCHAR" maxlength="255"> 
     </cfif> <!--- DropdownBox 2 ---> 
    </cfif> <!--- DropdownBox 1 ---> 
    ORDER BY A.LASTNAME, A.FIRSTNAME 
</cfquery> 


<head> 
</head> 
<body style="padding:20px;"> 

<cfform> 


<cfformgroup type="horizontal" style="backgroundAlpha:0;font-size:12;color:##000;"> 
    <cfformgroup type="vertical" width="100"> 

<!---Query for STATE---> 
<cfquery name="getState" datasource="cfartgallery"> 
    SELECT A.STATE 
    FROM ARTISTS A 
</cfquery> 

<!---STATE Dropdown---> 
<cfselect name="dropdownbox1" query="getState" queryposition="below" 
    label="State:" value="STATE" display="STATE" 
    required="no" 
    style="backgroundAlpha:0;" width="125"> 
    <option></option> 
</cfselect> 

    </cfformgroup> 
    <cfformgroup type="vertical" width="100"> 

<!---Query for LastName---> 
<cfquery name="getLast" datasource="cfartgallery"> 
    SELECT A.LASTNAME 
    FROM ARTISTS A 
</cfquery> 

<!---LastName Dropdown---> 
<cfselect name="dropdownbox2" query="getLast" queryposition="below" 
    label="Last Name:" value="LASTNAME" display="LASTNAME" 
    required="no" 
    style="backgroundAlpha:0;" width="125"> 
    <option></option> 
</cfselect> 
    </cfformgroup> 
    </cfformgroup> 

    <cfformitem type="spacer" height="20"/> 


<!---Grid---> 
     <cfgrid name="myGrid" query="getArtists" format="html"> 
      <cfgridcolumn name="ARTISTID" header="ARTISTID" width="75" headeralign="center" dataalign="center"/> 
      <cfgridcolumn name="FIRSTNAME" header="FIRSTNAME" width="100" headeralign="center" dataalign="center"/> 
      <cfgridcolumn name="LASTNAME" header="LASTNAME" width="75" headeralign="center" dataalign="center"/> 
      <cfgridcolumn name="ADDRESS" header="ADDRESS" width="100" headeralign="center" dataalign="center"/> 
      <cfgridcolumn name="CITY" header="CITY" width="125" headeralign="center" dataalign="center"/> 
      <cfgridcolumn name="STATE" header="STATE" width="125" headeralign="center" dataalign="center"/> 
      <cfgridcolumn name="POSTALCODE" header="POSTALCODE" headeralign="center" dataalign="center"/> 
      <cfgridcolumn name="EMAIL" header="EMAIL" width="125" headeralign="center" dataalign="center"/> 
      <cfgridcolumn name="PHONE" header="PHONE" headeralign="center" dataalign="center"/> 
      <cfgridcolumn name="FAX" header="FAX" headeralign="center" dataalign="center"/> 
      <cfgridcolumn name="THEPASSWORD" header="THEPASSWORD" headeralign="center" dataalign="center"/> 
     </cfgrid> 

    </cfform> 

</body> 
</html> 

UPDATE

벤 Koshy 내가 형식으로 양식을 변경하는 경우 나 하나의 문제가 있지만 마치 마법처럼 일했다 코드 = "플래시"그것은 나를을 제공합니다 오류 "이름이 'submit'"인 메소드가 없습니다. 이 문제를 해결하려면 무엇이 필요합니까?

감사 자니이 필요한 대부분의 작업이 cfgrid를 작업 할

+1

비슷한 주제에 대한 최근 질문이있었습니다. 이 스레드 읽기, http://stackoverflow.com/questions/14026510/how-would-you-go-about-executing-a-database-query-based-on-the-value-from-a-form. 개념이 cfgrid에 적용되는지 확실하지 않지만 한 번 볼만한 가치가 있습니다. –

+0

필터를 선택한 경우 (상태/이름) 원래 페이지로 양식 제출이 누락되었습니다. – BKK

+0

질문이 하나 더있어서 상자를 입력 할 때 필터와 함께 2 개의 드롭 다운을 사용할 수도 있습니까? @ 벤 Koshy –

답변

1

는 그리드에 전원을 공급하는 CFQUERY 측에 있습니다. 여기서 우리는 단순히 드롭 다운 상자 양식 필드 필드 이름의 존재를 확인한 다음 해당 기준에 따라 필터링하는 추가 SQL을 작성합니다.

<cfquery name="getPeople" datasource="myDSN"> 
    SELECT 
    column1, column2 
    FROM 
    People 
    WHERE 
    1=1 
    <cfif structKeyExists(form,'dropdownbox1')> 
     AND column1 like <cfqueryparam value="%#dropdownbox1#%" cfsqltype="CF_SQL_VARCHAR" maxlength="255"> 
     <cfif structKeyExists(form,'dropdownbox2')> 
     AND column1 like <cfqueryparam value="%#dropdownbox2#%" cfsqltype="CF_SQL_VARCHAR" maxlength="255"> 
     </cfif> <!--- DropdownBox 2 ---> 
    </cfif> <!--- DropdownBox 1 ---> 
</cfquery> 

<cfgrid ... > 

UPDATE : 다음 샘플 코드를 사용하여 예입니다.

<html> 
<cfparam name="form.state" default=""> 
<cfparam name="form.lastname" default=""> 

<!---Grid Source---> 
<cfquery name="getArtists" datasource="cfartgallery"> 
    SELECT A.* 
    FROM ARTISTS A 
    WHERE 
     1=1 
    AND STATE like <cfqueryparam value="%#form.state#%" cfsqltype="CF_SQL_VARCHAR" maxlength="255"> 
    AND LASTNAME like <cfqueryparam value="%#form.lastname#%" cfsqltype="CF_SQL_VARCHAR" maxlength="255"> 
    ORDER BY A.LASTNAME, A.FIRSTNAME 
</cfquery> 


<head> 
</head> 
<body style="padding:20px;"> 

<cfform action="index.cfm" method="post"> 


<cfformgroup type="horizontal" style="backgroundAlpha:0;font-size:12;color:##000;"> 
    <cfformgroup type="vertical" width="100"> 

<!---Query for STATE---> 
<cfquery name="getState" datasource="cfartgallery"> 
    SELECT A.STATE 
    FROM ARTISTS A 
    WHERE 
     1=1 
     AND LASTNAME like <cfqueryparam value="%#form.lastname#%" cfsqltype="CF_SQL_VARCHAR" maxlength="255"> 
</cfquery> 

<!---STATE Dropdown---> 
<cfselect name="state" query="getState" queryposition="below" 
    label="State:" 
    value="STATE" 
    display="STATE" 
    required="no" 
    selected="#form.state#" 
    onchange="submit();" 
    style="backgroundAlpha:0;" width="125"> 
    <option></option> 
</cfselect> 


    </cfformgroup> 
    <cfformgroup type="vertical" width="100"> 

<!---Query for LastName---> 
<cfquery name="getLast" datasource="cfartgallery"> 
    SELECT A.LASTNAME 
    FROM ARTISTS A 
    WHERE 
     1=1 
     AND STATE like <cfqueryparam value="%#form.state#%" cfsqltype="CF_SQL_VARCHAR" maxlength="255"> 
</cfquery> 

<!---LastName Dropdown---> 
<cfselect name="lastname" query="getLast" queryposition="below" 
    label="Last Name:" value="LASTNAME" display="LASTNAME" 
    selected="#form.lastname#" 
    required="no" 
    onchange="submit();" 
    style="backgroundAlpha:0;" width="125"> 
    <option></option> 
</cfselect> 

    <a href="index.cfm"><input type="button" value="Reset"></a> 
    </cfformgroup> 
    </cfformgroup> 

    <cfformitem type="spacer" height="20"/> 


<!---Grid---> 
     <cfgrid name="myGrid" query="getArtists" format="html"> 
      <cfgridcolumn name="ARTISTID" header="ARTISTID" width="75" headeralign="center" dataalign="center"/> 
      <cfgridcolumn name="FIRSTNAME" header="FIRSTNAME" width="100" headeralign="center" dataalign="center"/> 
      <cfgridcolumn name="LASTNAME" header="LASTNAME" width="75" headeralign="center" dataalign="center"/> 
      <cfgridcolumn name="ADDRESS" header="ADDRESS" width="100" headeralign="center" dataalign="center"/> 
      <cfgridcolumn name="CITY" header="CITY" width="125" headeralign="center" dataalign="center"/> 
      <cfgridcolumn name="STATE" header="STATE" width="125" headeralign="center" dataalign="center"/> 
      <cfgridcolumn name="POSTALCODE" header="POSTALCODE" headeralign="center" dataalign="center"/> 
      <cfgridcolumn name="EMAIL" header="EMAIL" width="125" headeralign="center" dataalign="center"/> 
      <cfgridcolumn name="PHONE" header="PHONE" headeralign="center" dataalign="center"/> 
      <cfgridcolumn name="FAX" header="FAX" headeralign="center" dataalign="center"/> 
      <cfgridcolumn name="THEPASSWORD" header="THEPASSWORD" headeralign="center" dataalign="center"/> 
     </cfgrid> 

    </cfform> 

</body> 
</html> 
+0

당신의 빠른 응답을위한 감사합니다 그러나 나는 아직도 그것을 얻지 않는다. @ 벤 Koshy –

+0

그것은 매력처럼 작동했습니다. 정말 고맙습니다! @ 벤 코시 –