Coldfusion 基于下拉框的过滤网格
我刚接触ColdFusion,我正在努力找出如何在MS Access中轻松完成一些简单的功能 下面是我试图做的:我想让一个Coldfusion 基于下拉框的过滤网格,coldfusion,cfgrid,Coldfusion,Cfgrid,我刚接触ColdFusion,我正在努力找出如何在MS Access中轻松完成一些简单的功能 下面是我试图做的:我想让一个cfgrid根据下拉框过滤数据。然后根据另一个下拉框(如果需要)进一步过滤该数据 任何帮助都将不胜感激 例如: <html> <!---Grid Source---> <cfquery name="getArtists" datasource="cfartgallery"> SELECT A.* FROM ART
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>
选择A*
来自艺术家A
哪里
1=1
和国家一样
姓什么
按A.LASTNAME,A.FIRSTNAME排序
选择一个状态
来自艺术家A
选择一个.LASTNAME
来自艺术家A
更新
Ben Koshy给我的代码工作起来就像一个难题,但当我将表单更改为format=“flash”时,它会给我一个错误“没有名为“submit”的方法”。我需要做什么来解决这个问题
谢谢
Johnny使用CFGRID所需的大部分工作都在为网格供电的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 ... >
挑选
第1栏,第2栏
从…起
人
哪里
1=1
和第1列一样
和第1列一样
更新:下面是使用示例代码的示例
<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>
选择A*
来自艺术家A
哪里
1=1
和国家一样
姓什么
按A.LASTNAME,A.FIRSTNAME排序
选择一个状态
来自艺术家A
哪里
1=1
姓什么
选择一个.LASTNAME
来自艺术家A
哪里
1=1
和国家一样
使用CFGRID所需的大部分工作都在为网格供电的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 ... >
挑选
第1栏,第2栏
从…起
人
哪里
1=1
和第1列一样
和第1列一样
更新:下面是使用示例代码的示例
<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>
选择A*
来自艺术家A
哪里
1=1
和国家一样
姓什么
按A.LASTNAME,A.FIRSTNAME排序
选择一个状态
来自艺术家A
哪里
1=1
姓什么
选择一个.LASTNAME
来自艺术家A
哪里
1=1
和国家一样
最近有一个关于类似主题的问题。阅读此线程。我不确定这些概念是否适用于cfgrid,但值得一试。当选择过滤器(状态/名称)时,您缺少将表单提交回原始页面的操作。还有一个问题,那么我是否可以在键入时将这两个下拉框与过滤器结合使用@Ben KoshyThere是最近一个关于类似主题的问题。阅读此线程。我不确定这些概念是否适用于cfgrid,但值得一试。当选择过滤器(状态/名称)时,您缺少将表单提交回原始页面的操作。还有一个问题,那么我是否可以在键入时将这两个下拉框与过滤器结合使用@Ben Koshythank感谢你的快速回复,但我还是不明白@Ben Koshythank感谢你的快速回复,但我还是不明白@本·科希