MadCatm2
MadCatm2

Reputation: 1001

POST with Ext.Ajax.request?

I am new to ExtJS and I am trying to implement a combo box and 'Save' button that will save the "boxStatus" for all of the records selected in my grid (there is a little checkbox column for selecting records, and a combo box for the status). I have tried with the following ajax call:

saveBulkBoxComments : function(){
    var formObj = this.getPositionPanel().getForm();
    var fieldValues = formObj.getFieldValues();

        Ext.Ajax.request({
        url: SAVE_BULK_BOX_COMMENTS_URL,
        method: 'POST',
        params: {
            positionDate: this.parentRecordData.data.positionDate,
            groupIds: this.parentRecordData.data.groupId,
            boxStatus: fieldValues.boxStatus,
            csrComment: fieldValues.csrComment
        },
        success : function(response) {
                //how do I update box status for all records selected?
                this.loadPositions();
        },
        scope: this
        });
}

Here is the Java:

return getReturnValue(new Runnable() {
        public void run() {     
            String groupIdList[] = groupIds.split(",");     
            String user = mercuryUserScreenNameGetter.getValue(request);
            Date date = Utils.parseDate(positionDate, DATE_FORMAT);
            Stream.of(groupIdList)
                .forEach(groupId -> 
                positionsDataMediator.addBoxAnnotation(date,user, groupId,   csrComment, boxStatus));           
            }
}); 

I am not really sure how to post all of the boxStatus for all of the records selected. Would I have to write a method that iterates over all of the records when I hit Save? That seems wrong...Thanks for the help.

Upvotes: 1

Views: 7474

Answers (1)

MadCatm2
MadCatm2

Reputation: 1001

After some fiddling, I got it working. The trick was to iterate over each groupID, for all of the selected records...this way I was able to update the boxStatus for each of those records at once:

saveBulkBoxComments : function(){


         grid = this.getPositionPanel();
         var store = grid.getStore();


         formObj = this.getBoxCommentsFormPanel().getForm();
         var fieldValues = formObj.getFieldValues();

         var value='';


         selectedRecords = grid.getSelectionModel().getSelection();


         Ext.each(selectedRecords, function(item) {
             value +=item.get('groupId') +',';
             }            
         );

         Ext.Ajax.request({
             url: SAVE_BULK_BOX_COMMENTS_URL,
             method: 'POST',
             params: {
                 groupIds :value,
                 positionDate: this.parentRecordData.data.positionDate,
                 boxStatus: fieldValues.boxStatus,
                 csrComment: fieldValues.csrComment

             },

             success: function(result, action, response) {
                 var jsonData = Ext.decode(result.responseText);


                 var jsonRecords = jsonData.records;

                 Ext.getCmp('boxCommentsWindow').close();
                 this.loadPositions();

                },

                scope: this 
                });
             }


});

Upvotes: 1

Related Questions