Всем привет.
Нужна ваша помощь, потому что не получается сделать редактирование записи.
Есть таблица с полями и записями. На одну колонку в этой таблице добавлена кнопка "Редактировать" для каждой записи. При нажатии на нее передаются параметры через apex:param в переменную myID и переход на другую страницу(кастомную страницу, а не стандартную для редактирования). Так вот переменная myID остается пустой при переходе. Нигде не могу найти решение. Как это исправить, может кто-то знает?
Пробовал на главной странице, на которой расположена таблица, рядом вывести поля, в которые и передаю запись с нужным id выбранной записи. Все хорошо работает и данные передаются в переменную myID. Но этот способ не подходит для этого задания.
Благодарю за любую помощь.
Всем привет. Нужна ваша помощь, потому что не получается сделать редактирование записи. Есть таблица с полями и записями. На одну колонку в этой таблице добавлена кнопка "Редактировать" для каждой записи. При нажатии на нее передаются параметры через apex:param в переменную myID и переход на другую страницу(кастомную страницу, а не стандартную для редактирования). Так вот переменная myID остается пустой при переходе. Нигде не могу найти решение. Как это исправить, может кто-то знает? Пробовал на главной странице, на которой расположена таблица, рядом вывести поля, в которые и передаю запись с нужным id выбранной записи. Все хорошо работает и данные передаются в переменную myID. Но этот способ не подходит для этого задания. Благодарю за любую помощь.
<td class="invoiceNameTD deleteInvoice">
<apex:outputPanel id="deleteInvoiceOP">
<img class="deleteInvoice" src="{!URLFOR($Resource.Inv_Icon_DeleteInvoice)}"
title="Delete {!JSENCODE(invoiceDTO.Name)}"/>
<apex:actionSupport event="onclick" action="{!deleteInvoice}" immediate="false"
reRender="invoiceProductsDT, productTableHolderTD, invoiceRepeat, invoiceRepeatOP"
onSubmit="if(!confirm('Are you sure you want to delete {!JSENCODE(invoiceDTO.Name)}?')){return false};"
status="actionStatus">
<apex:param value="{!invoiceDTO.Id}" assignTo="{!selectedInvoiceId}" name="selectedInvoiceId"/>
</apex:actionSupport>
</apex:outputPanel>
</td>
[code]<td class="invoiceNameTD deleteInvoice"> <apex:outputPanel id="deleteInvoiceOP"> <img class="deleteInvoice" src="{!URLFOR($Resource.Inv_Icon_DeleteInvoice)}" title="Delete {!JSENCODE(invoiceDTO.Name)}"/> <apex:actionSupport event="onclick" action="{!deleteInvoice}" immediate="false" reRender="invoiceProductsDT, productTableHolderTD, invoiceRepeat, invoiceRepeatOP" onSubmit="if(!confirm('Are you sure you want to delete {!JSENCODE(invoiceDTO.Name)}?')){return false};" status="actionStatus"> <apex:param value="{!invoiceDTO.Id}" assignTo="{!selectedInvoiceId}" name="selectedInvoiceId"/> </apex:actionSupport> </apex:outputPanel> </td>[/code]
Это же удаление, а вопрос про редактирование. Или вы показали пример, как передать значение в переменную? Так значение передаются, если делать редактирование на одной и той же странице, где и сама таблица. Но при переходе на другую страницу, где редактирование происходит, там почему то уже myID с переданными в нее новыми значениями не учитывается и myID остается нулевой. Видимо, когда переход на другую страницу происходит, контроллер по новой запускается и задает переменной myID нулевое значение.
Вот и вопрос, как сделать так, чтобы при переходе на страницу редактирования учитывалась переменная myID, на которую значение было передано через apex:param.
[quote="Andrii Muzychuk"][code]<td class="invoiceNameTD deleteInvoice"> <apex:outputPanel id="deleteInvoiceOP"> <img class="deleteInvoice" src="{!URLFOR($Resource.Inv_Icon_DeleteInvoice)}" title="Delete {!JSENCODE(invoiceDTO.Name)}"/> <apex:actionSupport event="onclick" action="{!deleteInvoice}" immediate="false" reRender="invoiceProductsDT, productTableHolderTD, invoiceRepeat, invoiceRepeatOP" onSubmit="if(!confirm('Are you sure you want to delete {!JSENCODE(invoiceDTO.Name)}?')){return false};" status="actionStatus"> <apex:param value="{!invoiceDTO.Id}" assignTo="{!selectedInvoiceId}" name="selectedInvoiceId"/> </apex:actionSupport> </apex:outputPanel> </td>[/code][/quote] Это же удаление, а вопрос про редактирование. Или вы показали пример, как передать значение в переменную? Так значение передаются, если делать редактирование на одной и той же странице, где и сама таблица. Но при переходе на другую страницу, где редактирование происходит, там почему то уже myID с переданными в нее новыми значениями не учитывается и myID остается нулевой. Видимо, когда переход на другую страницу происходит, контроллер по новой запускается и задает переменной myID нулевое значение. Вот и вопрос, как сделать так, чтобы при переходе на страницу редактирования учитывалась переменная myID, на которую значение было передано через apex:param.
а как ты передаешь myId на другую страницу?
а как ты передаешь myId на другую страницу?
В том то и дело, что я не знаю, как это сделать.
Могу только на той же странице, где и таблица, передать через apex:param id в переменную myID. А там уже reRender pageblock на котором отображаются inputField нужной записи с тем id, которое я передал с помощью apex:param в myID. И там уже все хорошо редактируется. Но этот способ не подходит.
[quote="Maxim Elets"]а как ты передаешь myId на другую страницу?[/quote] В том то и дело, что я не знаю, как это сделать. Могу только на той же странице, где и таблица, передать через apex:param id в переменную myID. А там уже reRender pageblock на котором отображаются inputField нужной записи с тем id, которое я передал с помощью apex:param в myID. И там уже все хорошо редактируется. Но этот способ не подходит.
У тебя есть метод, который обрабатывает нажатие на кнопку.
public PageReference editSelectedItem() {
PageReference pr = new PageReference('/apex/EditItemPage?id=' + myId);
pr.setRedirect(true);
return pr;
}
У тебя есть метод, который обрабатывает нажатие на кнопку. [code]public PageReference editSelectedItem() { PageReference pr = new PageReference('/apex/EditItemPage?id=' + myId); pr.setRedirect(true); return pr; }[/code]
Можно в контроллере:
передаем параметр PageReference.getParameters().put('myID', someId);
получаем параметр ApexPages.currentPage().getParameters().get('myID')
Можно в контроллере: передаем параметр PageReference.getParameters().put('myID', someId); получаем параметр ApexPages.currentPage().getParameters().get('myID')
[quote="artmat"]Так вот переменная myID остается пустой при переходе. Нигде не могу найти решение. Как это исправить, может кто-то знает?[/quote]Как ты это сейчас делаешь? Код в студию!
ну то ясно
правильно заданный вопрос это 90% в поиске решения
ребята выше уже ответили:)
[quote]При нажатии на нее передаются параметры через apex:param в переменную myID и переход на другую страницу(кастомную страницу, а не стандартную для редактирования).[/quote] [quote="artmat"]В том то и дело, что я не знаю, как это сделать.[/quote] ну то ясно :) правильно заданный вопрос это 90% в поиске решения :) ребята выше уже ответили:)
А можно сделать вообще в одну строчку
<a href="/apex/EditItemPage?id={!myMagicFieldWithId}" target="_blank" >Ахалай-Махалай, страница откройся</a>
А можно сделать вообще в одну строчку :D <a href="/apex/EditItemPage?id={!myMagicFieldWithId}" target="_blank" >Ахалай-Махалай, страница откройся</a> :)
Дима! Ты че так долго? Ведь это самое правильно решение!
В данном случае.
В моем случае там есть еще всякие проверки. А тут, действительно, без разбора переходи на другую страницу да и все.
Дима! Ты че так долго? Ведь это самое правильно решение! В данном случае. В моем случае там есть еще всякие проверки. А тут, действительно, без разбора переходи на другую страницу да и все.
Напроверяться еще успеем.
Просто человек задал вопрос как перейти на другую страницу с параметрами.
Salesforce блин учим а HTML выучить забыли
:D Напроверяться еще успеем. Просто человек задал вопрос как перейти на другую страницу с параметрами. Salesforce блин учим а HTML выучить забыли :)
У меня везде только inline edit. Переходить на другую страницу - это очень мерзко. Легко сделать, но для конечного пользователя - это не удобно. Вот и не подумал о таком варианте решение этой проблемы.
У меня везде только inline edit. Переходить на другую страницу - это очень мерзко. Легко сделать, но для конечного пользователя - это не удобно. Вот и не подумал о таком варианте решение этой проблемы.