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

Редактирование записи на отдельной странице.

Всем привет.
Нужна ваша помощь, потому что не получается сделать редактирование записи.

Есть таблица с полями и записями. На одну колонку в этой таблице добавлена кнопка "Редактировать" для каждой записи. При нажатии на нее передаются параметры через 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]

Andrii Muzychuk
<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>

Это же удаление, а вопрос про редактирование. Или вы показали пример, как передать значение в переменную? Так значение передаются, если делать редактирование на одной и той же странице, где и сама таблица. Но при переходе на другую страницу, где редактирование происходит, там почему то уже 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 на другую страницу?

Maxim Elets
а как ты передаешь 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')

artmat
Так вот переменная myID остается пустой при переходе. Нигде не могу найти решение. Как это исправить, может кто-то знает?
Как ты это сейчас делаешь? Код в студию!

[quote="artmat"]Так вот переменная myID остается пустой при переходе. Нигде не могу найти решение. Как это исправить, может кто-то знает?[/quote]Как ты это сейчас делаешь? Код в студию!

При нажатии на нее передаются параметры через apex:param в переменную myID и переход на другую страницу(кастомную страницу, а не стандартную для редактирования).

artmat
В том то и дело, что я не знаю, как это сделать.

ну то ясно
правильно заданный вопрос это 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. Переходить на другую страницу - это очень мерзко. Легко сделать, но для конечного пользователя - это не удобно. Вот и не подумал о таком варианте решение этой проблемы.