Регистрация  |  Вход

Не удаляется запись reponse.getState = ERROR

Не могу удалить запись из lightning:datatable, неособо шарю в js, пожалуйста подскажите кто может срочно

Apex Class

public class ContactsController {
//Get Account Records
@AuraEnabled(cacheable=true)
public static List<Contact> getAccounts (String pageSize, String pageNumber){
List<Contact> contactList = new List<Contact>();
ApexPages.StandardSetController ssc = new ApexPages.StandardSetController(Database.getQueryLocator('SELECT Name, Email, Contact_Level__c, Contact_Url__c, Account.Owner.Name, CreatedBy.Name, CreatedDate, Account.Name FROM Contact'));
ssc.setpagesize(Integer.valueOf(pageSize));
ssc.setPageNumber(Integer.valueOf(pageNumber));
contactList = ssc.getRecords();
///////////////////////////////////

List<String> urls = new List<String>();

for (Contact item:contactList){
Id acc = item.AccountId;
Id owner = item.CreatedById;

item.Contact_Url__c = '/lightning/r/Contact/' + Id.valueOf(item.Id) + '/view';
item.Account_Url__c ='/lightning/r/Account/' + Id.valueOf(acc) + '/view';
item.Owner_Url__c ='/lightning/r/Account/' + Id.valueOf(owner) + '/view';
}

return contactList;
}

//Delete Account
@AuraEnabled
public static void deleteContact(Id contact){
Contact delContact = [SELECT Id,Name FROM Contact WHERE Id=:contact];
delete delContact;
}

}


tableControllerFunction.js
handleRowAction: function (component, event, helper) {
var action = event.getParam('action');
switch (action.name) {
case 'edit':
helper.editRecord(component, event);
break;
case 'delete':
helper.deleteRecord(component, event);
break;
case 'view':
helper.viewRecord(component, event);
break;
}
},

Helper.js
deleteRecord : function(component, event) {
var row = event.getParam('row');
var action = component.get("c.deleteContact");
console.log(row.Id);
action.setParams({
"contact": row
});
action.setCallback(this, function(response) {
var state = response.getState();
console.log(state);
if (state === "SUCCESS" ) {
var rows = component.get('v.data');
var rowIndex = rows.indexOf(row);
rows.splice(rowIndex, 1);
component.set('v.data', rows);
var toastEvent = $A.get("e.force:showToast");
toastEvent.setParams({
"title": "Success!",
"message": "The record has been delete successfully."
});
toastEvent.fire();
}
});
$A.enqueueAction(action);
},

Не могу удалить запись из lightning:datatable, неособо шарю в js, пожалуйста подскажите кто может срочно

[b]Apex Class[/b]
[code]public class ContactsController {
    //Get Account Records
    @AuraEnabled(cacheable=true)
    public static List<Contact> getAccounts (String pageSize, String pageNumber){
        List<Contact> contactList = new List<Contact>();
        ApexPages.StandardSetController ssc = new ApexPages.StandardSetController(Database.getQueryLocator('SELECT Name, Email, Contact_Level__c, Contact_Url__c, Account.Owner.Name, CreatedBy.Name, CreatedDate, Account.Name FROM Contact'));
        ssc.setpagesize(Integer.valueOf(pageSize));
        ssc.setPageNumber(Integer.valueOf(pageNumber));
        contactList = ssc.getRecords();
		///////////////////////////////////
		
        List<String> urls = new List<String>();
        
        for (Contact item:contactList){
            Id acc = item.AccountId;
            Id owner = item.CreatedById;
        	
            item.Contact_Url__c = '/lightning/r/Contact/' + Id.valueOf(item.Id) + '/view';
            item.Account_Url__c ='/lightning/r/Account/' + Id.valueOf(acc) + '/view';
            item.Owner_Url__c ='/lightning/r/Account/' + Id.valueOf(owner) + '/view';
        }
        
        return contactList;
    }
     
    //Delete Account
    @AuraEnabled
    public static void deleteContact(Id contact){
        Contact delContact = [SELECT Id,Name FROM Contact WHERE Id=:contact];
        delete delContact;
    }

}[/code]
[b]tableControllerFunction.js[/b]
[code]handleRowAction: function (component, event, helper) {
        var action = event.getParam('action');
        switch (action.name) {
            case 'edit':
                helper.editRecord(component, event);
                break;
            case 'delete':
                helper.deleteRecord(component, event);
                break;
            case 'view':
                helper.viewRecord(component, event);
                break;
        }
    },   [/code]
[b]Helper.js[/b]
[code]deleteRecord : function(component, event) {
        var row = event.getParam('row');
        var action = component.get("c.deleteContact");
        console.log(row.Id);
        action.setParams({
            "contact": row
        });
        action.setCallback(this, function(response) {
            var state = response.getState();
            console.log(state);
            if (state === "SUCCESS" ) {
                var rows = component.get('v.data');
                var rowIndex = rows.indexOf(row);
                rows.splice(rowIndex, 1);
                component.set('v.data', rows);
                var toastEvent = $A.get("e.force:showToast");
                toastEvent.setParams({
                    "title": "Success!",
                    "message": "The record has been delete successfully."
                });
                toastEvent.fire();
            }
        });
        $A.enqueueAction(action);
    },[/code]

var row = event.getParam('row');
var action = component.get("c.deleteContact");
console.log(row.Id);
action.setParams({
"contact": row.Id
});

Должно быть как минимум так. Апекс метод принимает Id, а ему передают объект.

[code]
        var row = event.getParam('row');
        var action = component.get("c.deleteContact");
        console.log(row.Id);
        action.setParams({
            "contact": row.Id
        });
[/code]
Должно быть как минимум так. Апекс метод принимает Id, а ему передают объект.

DarkReduX
неособо шарю в js

в таком случае, тяжело тебе придется с лайтнингом

должно быть так:

Developer
"contact": row.Id

но в реальной ситуации там могут быть и другие причины почему Контакт не хочет удаляться, поэтому раскидывай дебаги в Апекс методе и смотри в Консоль логах дошло ли до выполнения апекс кода и что там происходит

[quote="DarkReduX"]неособо шарю в js[/quote]

в таком случае, тяжело тебе придется с лайтнингом

должно быть так:
[quote="Developer"] "contact": row.Id[/quote]

но в реальной ситуации там могут быть и другие причины почему Контакт не хочет удаляться, поэтому раскидывай дебаги в Апекс методе и смотри в Консоль логах дошло ли до выполнения апекс кода и что там происходит