Skip to main content
Known Participant
January 6, 2011
Question

Binding from cfc query to form fields

  • January 6, 2011
  • 2 replies
  • 5202 views

I wrote a simple cfc that houses a query pof my db. The query takes one argument that is the id of the record it is supposed to pull. What I am attempting to do is build a form to maintain the records of the db. In my form, I have a cfselect that allows the user to select the record from the db. The value of the cfselect is the id. I want the form to be populated with the query data from the cfc based upon the end users selection from the cfselect. I am getting it to pull the data from the cfc as I have dumped that to the page. I have not been successful in getting the form to populate with the data though. Here is my code...

My cfselect:

                        <cfselect name="webinar_classes" id="webinar_classes">
                            <cfoutput query="WebinarClasses">
                                <cfif WebinarClasses.currentrow is 1>
                                    <option value="#WebinarClasses.CLASSESID#" selected>#WebinarClasses.TITLE# #DateFormat(WebinarClasses.DATE, 'mm/dd/yy')#</option>
                                <cfelse>
                                    <option value="#WebinarClasses.CLASSESID#">#WebinarClasses.TITLE# #DateFormat(WebinarClasses.DATE, 'mm/dd/yy')#</option>
                                </cfif>
                            </cfoutput>
                        </cfselect>

My cfinput with the binding code:

<cfinput name="endTime" id="endTime" value="" size="3" bind="cfc:webinar_admin.cfc.webinar_admin.getEditendtime({webinarClassesedit:webinar_classes})" />

Any help would be appreciated.

    This topic has been closed for replies.

    2 replies

    BKBK
    Community Expert
    Community Expert
    January 7, 2011

    <cfselect name="webinar_classes" id="webinar_classes">
        <!--- The first option goes on top by default --->
        <option value="">Select</option>
        <cfoutput query="WebinarClasses">
                <option value="#WebinarClasses.CLASSESID#" selected>#WebinarClasses.TITLE# #DateFormat(WebinarClasses.DATE, 'mm/dd/yy')#</option>
        </cfoutput>
    </cfselect>

    The cfinput with the binding code:

    <cfinput name="endTime" id="endTime" value="" size="3" bind="cfc:webinar_admin.cfc.webinar_admin.getEditendtime({webinar_classes})" />

    We would then expect getEditendtime(id) to be a one-argument function which returns a string, based on the id passed to it.

    fs22Author
    Known Participant
    January 7, 2011

    Thank you for your feedback. Here is the function if this helps...

    <cffunction name="getEditendtime" access="remote" returntype="string" description="cfc to return query results for webinar classes' endtime based upon cfselection" displayname="getEditendtime" hint="This cfc simply runs a query against the db of webinar classes. The parameter is to be supplied via a cfselect, but perhaps could utilize another variable input method.">
            <cfargument name="webinarClassid" type="string" required="yes">
            <cfquery name="WebinarClasses" datasource="activantcorpsitedb">
                SELECT WEBINARCLASSES.DATE, WEBINARCLASSES.ENDTIME, WEBINARCLASSES.WEBINARID, WEBINARCLASSES.ID AS 'CLASSESID', WEBINARS.ID AS 'WEBINARSID'
                FROM WEBINARCLASSES
                LEFT JOIN WEBINARS
                ON WEBINARS.ID = WEBINARCLASSES.WEBINARID
                WHERE WEBINARS.ID = WEBINARCLASSES.WEBINARID AND WEBINARCLASSES.DATE >= #Now()# AND WEBINARCLASSES.ID = #arguments.webinarClassid#
                ORDER BY WEBINARCLASSES.DATE
            </cfquery>
           
            <cfset editEndtime = #TimeFormat(WebinarClasses.ENDTIME,'short')#>

            <cfreturn editEndtime>
        </cffunction>

    BKBK
    Community Expert
    Community Expert
    January 7, 2011

    <cffunction name="getEditendtime" access="remote" returntype="string" description="cfc to return query results for webinar classes' endtime based upon cfselection" displayname="getEditendtime" hint="This cfc simply runs a query against the db of webinar classes. The parameter is to be supplied via a cfselect, but perhaps could utilize another variable input method.">
         <cfargument name="webinarClassid" type="string" required="yes">


        <!--- Make function variables function-local --->
        <cfset var datetimeObject=''>
        <cfset var editEndtime=''>

        <cfset var WebinarClasses = queryNew("","")>


        <!--- No need for lots of columns. You're only gonna return the endTime anyway --->
          <cfquery name="WebinarClasses" datasource="activantcorpsitedb">
              SELECT WEBINARCLASSES.DATE, WEBINARCLASSES.ENDTIME
              FROM WEBINARCLASSES
              LEFT JOIN WEBINARS
              ON WEBINARS.ID = WEBINARCLASSES.WEBINARID
              WHERE WEBINARS.ID = WEBINARCLASSES.WEBINARID AND WEBINARCLASSES.DATE >= #Now()# AND WEBINARCLASSES.ID = #arguments.webinarClassid#
              ORDER BY WEBINARCLASSES.DATE
          </cfquery>


          <cfset datetimeObject = parseDatetime(WebinarClasses.ENDTIME)>
          <cfset editEndtime = TimeFormat(datetimeObject,'short')>


          <cfreturn editEndtime>
      </cffunction>

    Inspiring
    January 6, 2011

    Hi,

    Use Firebug in Firefox, it may help to solve the problem.

    Also, in your bind, you have so many .

    It is something like this bind ="cfc: cfcname.Functionname(arguments to pass)"

    Please verify