首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于下拉框的CFGRID过滤

基于下拉框的CFGRID过滤
EN

Stack Overflow用户
提问于 2012-12-27 17:21:26
回答 1查看 1.4K关注 0票数 1

我是ColdFusion新手,我很难搞清楚如何在MS Access中轻松地完成一些简单的功能。

下面是我要做的事情:我希望有一个基于下拉框的cfgrid过滤它的数据。然后根据另一个下拉框(如果需要的话)进一步过滤数据。

任何帮助都将不胜感激。

示例:

代码语言:javascript
复制
    <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>

更新

本·科什给我的代码就像一个魅力--一个问题,尽管当我将表单改为format="flash“时,它会给我一个错误,”没有一个名称为‘submit’的方法“。我需要做些什么来解决这个问题?

谢谢约翰尼

EN

回答 1

Stack Overflow用户

发布于 2012-12-27 18:02:09

使用CFGRID所需的大部分工作都在为网格供电的CFQUERY侧。在这里,我们只需检查下拉框表单字段名是否存在,然后编写一些基于该条件筛选的额外SQL。

代码语言:javascript
复制
<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 ... >

更新:下面是使用示例代码的示例。

代码语言:javascript
复制
<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> 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14058586

复制
相关文章

相似问题

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