使用Ext.Ajax.request POST?

时间:2017-02-28 16:55:58

标签: javascript java ajax extjs

我是ExtJS的新手,我正在尝试实现一个组合框和“保存”按钮,它将为我的网格中选择的所有记录保存“boxStatus”(有一个用于选择记录的小复选框列,以及状态的组合框)。我尝试过以下ajax调用:

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
        });
}

这是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));           
            }
}); 

我不确定如何为所有选定的记录发布所有boxStatus。当我点击Save时,我是否必须编写一个迭代所有记录的方法?这似乎是错的......感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

经过一番摆弄,我得到了它的工作。诀窍是迭代每个groupID,对于所有选定的记录......这样我就能够立即更新每个记录的boxStatus:

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 
                });
             }


});