I have a two tables, Questions and Answers.  I am wanting to create a cfform 
that will allow me to easily allow for users to create questions, and then 
assign answer options to these questions.

Using the cfgrid "edit" functionality, I have created the question-creation 
side no problem.  However, I am running into issues with the "answers" portion.

While it is easy to add an answer with the cfgrid, I want to be able to link a 
cfgrid that has the question title to another cfgrid that displays the current 
answers that have the selected question's ID.

At ASFusion.com, I found a nice example about filtering the results between the 
grids.  Unfortunately, whenever a filter is applied, the edit functionality 
(insert, delete) of the answer grid stops working, and updating the form passes 
without any values.  A follow-up example of how to do this was posted on 
ASFusion, but I don't think that it specifically applies to what I am doing, 
and I do not have the experience or knowledge to modify the actionscript to do 
what I need it to do.  I will post my code below, and I appreciate any help 
that anyone can offer.

<!---Here's the code for updating the database, and it works brilliantly when 
no records are filtered.--->

<cfif isdefined("Form.myGrid.rowstatus.action")>  
    <cfloop index = "CounterA" from = "1" to =
    #arraylen(Form.myGrid.rowstatus.action)#>

    <cfif Form.myGrid.rowstatus.action[counterA] is "D">
  
      <cfquery name="DeleteExistingAnswer" 
        datasource="Test">
        DELETE FROM Answers
        WHERE
        AnswerID=#Form.myGrid.original.AnswerID[CounterA]#
      </cfquery>

    <cfelseif Form.myGrid.rowstatus.action[counterA] is "U">

      <cfquery name="UpdateExistingAnswer"
        datasource="Test">
        UPDATE Answers
        SET 
        AnswerText='#Form.myGrid.AnswerText[CounterA]#',
        QuestionID='#Form.myGrid.QuestionID[CounterA]#',
        '#testid#'
        WHERE
          AnswerID=#Form.myGrid.original.AnswerID[CounterA]#
      </cfquery>

    <cfelseif Form.myGrid.rowstatus.action[counterA] is "I">

      <cfquery name="InsertNewQuestion"
        datasource="Test">
        INSERT into Answers
          (AnswerText, QuestionID, TestID)
        VALUES (
        AnswerText='#Form.myGrid.AnswerText[CounterA]#',
        QuestionID='#Form.myGrid.QuestionID[CounterA]#',
        '#testid#'  )
      </cfquery>
    </cfif>
  </cfloop>
</cfif>

<!---Here's the "Answers" portion of my form, with the AS--->

<cfformitem type="script">
        function applyFilter( term:String, grid:mx.controls.DataGrid, 
columns:Array ):Void {
                
                var filterTerm:String = term.toString().toLowerCase();
                
                if(filterTerm.length > 0) {
                if(_global.unfilteredData[grid.id] == undefined){
                if (_global.unfilteredData == undefined){_global.unfilteredData 
= {};
                }
                _global.unfilteredData[grid.id]  = grid.dataProvider.slice(0);
                }
                var filteredData:Array = [];for(var i = 0; i< 
_global.unfilteredData[grid.id].length; i++) {
                var item:Object =  _global.unfilteredData[grid.id][i];
                var added:Boolean = false;
                                        
                for(var j = 0; j< columns.length; j++){
                        if(!added){
                var value:String = item[columns[j]].toString().toLowerCase();
                        if(value.indexOf(filterTerm) != -1)     { 
filteredData.push(item);
                        added = true;
                }
        }
else {
        break;
}
}
}
grid.dataProvider = filteredData;
        }
        else {
        if(_global.unfilteredData[grid.id] != undefined) grid.dataProvider = 
_global.unfilteredData[grid.id];
}
}
</cfformitem>
                        
<cfformgroup type="horizontal">
<cfformgroup type="vbox" width="300">
        <cfgrid name="QuestionSelect" query="Test" rowheaders="false"  
width="250" 
onchange="applyFilter(QuestionSelect.selectedItem.QuestionText,mygrid,['QuestionText'])">
                                <cfgridcolumn name="QuestionText" 
header="Question">
                        </cfgrid>       
</cfformgroup>
<cfformgroup type="vbox">
                        
        <cfgrid name="mygrid" width="550" query="Answer" insert="yes" 
delete="yes" selectmode="edit" enabled="yes" visible="yes">
                <cfgridcolumn name="QuestionID" display="yes">
                <cfgridcolumn name="AnswerText" header="Answers">
                <cfgridcolumn name="AnswerID" display="no">
                <cfgridcolumn name="TestID" display="no">
        </cfgrid>
</cfformgroup>
</cfformgroup>

        <cfinput type="submit" value="Save" name="saveanswers" >


Thanks for your help.


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|
Upgrade to Adobe ColdFusion MX7
Experience Flex 2 & MX7 integration & create powerful cross-platform RIAs
http://www.adobe.com/products/coldfusion/flex2/

Archive: 
http://www.houseoffusion.com/groups/CF-Talk/message.cfm/messageid:272271
Subscription: http://www.houseoffusion.com/groups/CF-Talk/subscribe.cfm
Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=89.70.4

Reply via email to