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

Обновление записи из JavaScript

У меня есть Visualforce страничка. На ней есть табличка, строки которой тягаются. Эти строки надо обновлять в БД.
Кнопка с методом в контролере не хочу - это лишнее телодвижение для пользователя.
Обновлять надо сразу когда тягают, т.к. по кнопкам идет вызов сервиса и обновить записи надо ДО вызова сервиса. Перед самым вызовом сервиса генерируется pdf:

Blob pdfBlob;    
PageReference pdfPage = new PageReference('/apex/PDF_Template_'+objToProcess.PDF_Type__c+'?id=' + objToProcess.Id);
if (pdfPage != null) {
pdfBlob= pdfPage.getContent();
}
string base64Pdf = EncodingUtil.base64Encode(pdfBlob);

base64Pdf улетает в сервисе.
Контроллер как раз вычитывает те записи, которые сортируются. Один контроллер (расширение) и несколько страничек.

У меня есть Visualforce страничка. На ней есть табличка, строки которой тягаются. Эти строки надо обновлять в БД.
Кнопка с методом в контролере не хочу - это лишнее телодвижение для пользователя.
Обновлять надо сразу когда тягают, т.к. по кнопкам идет вызов сервиса и обновить записи надо ДО вызова сервиса. Перед самым вызовом сервиса генерируется pdf:
[code]
Blob pdfBlob;    
PageReference pdfPage = new PageReference('/apex/PDF_Template_'+objToProcess.PDF_Type__c+'?id=' + objToProcess.Id);
  if (pdfPage != null) {
    pdfBlob= pdfPage.getContent();
  }
string base64Pdf = EncodingUtil.base64Encode(pdfBlob);[/code]
base64Pdf улетает в сервисе.
Контроллер как раз вычитывает те записи, которые сортируются. Один контроллер (расширение) и несколько страничек.

Что-то я не фига не понял в чем проблема?

Что-то я не фига не понял в чем проблема?

Я если честно вообще не понял что написано - как будто не русский писал

Я если честно вообще не понял что написано :D - как будто не русский писал :D 

А вообще если надо что-то обносить в БД используй один из вариантов работы с ajax - к примеру RemoteAction, да даже apex:actionFunction. вызывай по событию в js и обрабатывай ответ.
При чем здесь pdf и остальная логика вообще не понятно.

А вообще если надо что-то обносить в БД используй один из вариантов работы с ajax - к примеру RemoteAction, да даже apex:actionFunction. вызывай по событию в js и обрабатывай ответ.
При чем здесь pdf и остальная логика вообще не понятно.

Таблица. В ней строки. Как только строка меняется, эту запись надо обновить. Я хочу это сделать сразу, как поменялась запись на странице. Запись на странице меняется с помощью Javascript. Как мне обновить (DML update) запись на странички с помощью Javascript?

Таблица. В ней строки. Как только строка меняется, эту запись надо обновить. Я хочу это сделать сразу, как поменялась запись на странице. Запись на странице меняется с помощью Javascript. Как мне обновить (DML update) запись на странички с помощью Javascript?

apex:actionFunction
RemoteAction
REST Webservice
еще есть пара экзотическим методов.

Ты реально не знаешь как из JS вызвать Apex метод? Или ты не можешь в JS событие отловить по которому вызывать Apex метод из JS?

apex:actionFunction
RemoteAction
REST Webservice
еще есть пара экзотическим методов.

Ты реально не знаешь как из JS вызвать Apex метод? Или ты не можешь в JS событие отловить по которому вызывать Apex метод из JS?
Во еще забыл
RemoteObject
https://developer.salesforce.com/docs/atlas.en-us.pages.meta/pages/pages_remote_objects_using.htm

Remote Action и actionFunction не подходят ибо методы в контролере. Я видел код, который делает update записи (ну, и insert/delete) в Javascript. Целый Вэб Сервис городить ради этого - это через чур.

У меня есть Javascript код, который делает изменение. В конце этого кода я хочу добавить вызов какой-то СФ Javascript библиотеки, чтоб сделать update записи.

Remote Action и actionFunction не подходят ибо методы в контролере. Я видел код, который делает update записи (ну, и insert/delete) в Javascript. Целый Вэб Сервис городить ради этого - это через чур.

У меня есть Javascript код, который делает изменение. В конце этого кода я хочу добавить вызов какой-то СФ Javascript библиотеки, чтоб сделать update записи.

Andrew Muzychuk
Remote Action и actionFunction не подходят ибо методы в контролере.

ЧТО методы в контроллере?

Andrew Muzychuk
В конце этого кода я хочу добавить вызов какой-то СФ Javascript библиотеки, чтоб сделать update записи.

Тогда Remote Object наверное лучший вариант.

[quote="Andrew Muzychuk"]Remote Action и actionFunction не подходят ибо методы в контролере.[/quote]
ЧТО методы в контроллере?

[quote="Andrew Muzychuk"]В конце этого кода я хочу добавить вызов какой-то СФ Javascript библиотеки, чтоб сделать update записи.[/quote]
Тогда Remote Object наверное лучший вариант.

Нашел. Капец.
AJAX Toolkit

<script type="text/javascript">var __sfdcSessionId = '{!GETSESSIONID()}';
<script src="../../soap/ajax/37.0/connection.js" type="text/javascript">
</script>

//create an account
var account = new sforce.SObject("Account");
account.Name = "myName";
account.Phone = "2837484894";
result = sforce.connection.create([account]);
//update that account
account.id = result[0].id;
account.Phone = "12398238";
result = sforce.connection.update([account]);
if (result[0].getBoolean("success")) {
log("account with id " + result[0].id + " updated");
} else {
log("failed to update account " + result[0]);
}

Нашел. Капец.
[url=https://resources.docs.salesforce.com/sfdc/pdf/apex_ajax.pdf]AJAX Toolkit[/url]

[code]
<script type="text/javascript">var __sfdcSessionId = '{!GETSESSIONID()}';
  <script src="../../soap/ajax/37.0/connection.js" type="text/javascript">
</script>

//create an account
var account = new sforce.SObject("Account");
account.Name = "myName";
account.Phone = "2837484894";
result = sforce.connection.create([account]);
//update that account
account.id = result[0].id;
account.Phone = "12398238";
result = sforce.connection.update([account]);
if (result[0].getBoolean("success")) {
  log("account with id " + result[0].id + " updated");
} else {
  log("failed to update account " + result[0]);
}
[/code]