Unfortunately the objectadmin tag doesn't support sorting and filtering on
custom queries. However, you can catch sorting and filtering above the
objectadmin tag and incorporate them into your SQL yourself.
To handle sorting:
<cfif
isDefined("session.objectadminFilterObjects[attributes.typename].sqlOrderBy")>
<!--- do stuff with where clause in
session.objectadminFilterObjects[attributes.typename].sqlOrderBy --->
</cfif>
To handle filtering:
<cfif isdefined("session.objectadminFilterObjects.#yourtypename#.stObject")>
<!--- do stuff with values in
session.objectadminFilterObjects[attributes.typename].stObject --->
</cfif>
Blair
On Tue, May 15, 2012 at 12:10 PM, Xiaofeng Liu <[email protected]>wrote:
> Hi guys,
>
> I'm having a major issue here and I have been struggling with it for days.
> I know probably I have to customize the core objectadmin tag. But I need
> someone to point me into the right direction of how.
>
>
> Here is my problem:
>
> When I passed in a custom query to the
> <ft:objectAdmin /> tag, all the sorting and *filtering* stopped working.
> I can't really use sqlWhere and sqlOrderBy because the query I passed
> in is quite complex which used joins and other syntax like where not
> exists etc.
>
> Below is my code in customadmin/customlists/themes.cfm:
>
> <cfsetting enablecfoutputonly="true">
>
> <cfimport taglib="/farcry/core/tags/formtools" prefix="ft" />
> <cfimport taglib="/farcry/core/tags/admin/" prefix="admin" />
>
> <cfset objThemes =
> createObject("component","farcry.projects.#APPLICATION.projectDirectoryName#.packages.types.themes")>
>
> <cfset objUserProfile =
> createObject("component","farcry.core.packages.types.dmProfile")>
>
> <cfset loggedInUserName = SESSION["dmprofile"]["USERNAME"]>
> <cfset stcLoggedInUserProfile = objUserProfile.getProfile(userName =
> loggedInUserName)>
>
> <cfset qryThemes = objThemes.getThemesCMS(
> lstDepartmentNames = stcLoggedInUserProfile.USERDEPARTMENT
> , lstStateIDs = stcLoggedInUserProfile.USERSTATE
> , orderBy = "department, displayOrder")>
>
> <!--- set up page header --->
> <admin:header title="Themes" />
>
> <ft:objectAdmin
> title="Themes"
> typename="themes"
>
> ColumnList="createdby,lastupdatedby,datetimelastupdated,themeTitle,department,displayOrder,bActive"
>
>
> SortableColumns="datetimelastupdated,themeTitle,department,displayOrder,bActive"
>
> lFilterFields="themeTitle,department"
> sqlorderby="department,displayOrder"
> qRecordSet="#qryThemes#" />
>
> <admin:footer />
>
> <cfsetting enablecfoutputonly="no">
>
> The query I passed in is the type themes.cfc:
>
> <cffunction name="getThemesCMS" access="public" returntype="query"
> output="false">
> <cfargument name="lstDepartmentNames" type="string"
> required="false">
> <cfargument name="lstStateIDs" type="string"
> required="false">
> <cfargument name="orderBy" type="string" required="false">
>
> <cfset var qryThemes = "">
>
> <cfquery name="qryThemes" datasource="#APPLICATION.DSN#">
> SELECT T.objectID
> , T.themeTitle
> , D.departmentName
> FROM themes T
> LEFT JOIN departments D ON T.department =
> D.objectID
> WHERE 1 = 1
> <!--- Themes for specific departments --->
> <cfif StructKeyExists(ARGUMENTS,
> "lstDepartmentNames") AND
> ARGUMENTS.lstDepartmentNames NEQ "">
> AND (1 = 0
> <cfloop
> list="#ARGUMENTS.lstDepartmentNames#" index="dept">
> OR D.departmentName =
> <cfqueryparam cfsqltype="cf_sql_varchar"
> value="#dept#">
> </cfloop>
> OR len(T.department) = 0)
> </cfif>
> <!--- Themes for target states --->
> <cfif StructKeyExists(ARGUMENTS, "lstStateIDs")
> AND
> ARGUMENTS.lstStateIDs NEQ "">
> <cfif NOT
> ListFindNoCase(ARGUMENTS.lstStateIDs, "0")>
> AND (T.objectID IN (
> SELECT DISTINCT
> TS.parentid
> FROM themes_aThemeStates
> TS
> INNER JOIN states
> ST ON TS.data = ST.objectID
> WHERE ST.id IN
> (#ARGUMENTS.lstStateIDs#)
> OR ST.id =
> <cfqueryparam cfsqltype="cf_sql_tinyint" value="0">)
>
> OR NOT EXISTS (
> SELECT TS1.data
> FROM
> themes_aThemeStates TS1
> WHERE TS1.parentid
> = T.objectID
> )
> )
> </cfif>
> </cfif>
> <cfif StructKeyExists(ARGUMENTS, "orderBy")>
> ORDER BY #ARGUMENTS.orderBy#
> </cfif>
> </cfquery>
>
> <cfreturn qryThemes>
> </cffunction>
>
> Any ideas how I can fix this?
>
> Thanks in advance,
>
> Xiaofeng
> --
> Best regards,
>
> Xiaofeng,^_^
>
> --
> You received this message cos you are subscribed to "farcry-dev" Google
> group.
> To post, email: [email protected]
> To unsubscribe, email: [email protected]
> For more options: http://groups.google.com/group/farcry-dev
> --------------------------------
> Follow us on Twitter: http://twitter.com/farcry
--
You received this message cos you are subscribed to "farcry-dev" Google group.
To post, email: [email protected]
To unsubscribe, email: [email protected]
For more options: http://groups.google.com/group/farcry-dev
--------------------------------
Follow us on Twitter: http://twitter.com/farcry