Страница VisualForce для отображения списка выбранных контактов

#salesforce #visualforce

#salesforce #visualforce

Вопрос:

Вот сценарий, в котором я застрял. // отредактированный пост для уточнения более подробной информации.

Требование: Мне нужно отправить по электронной почте большую часть выбранных контактов. Если выбранным контактам нет адреса электронной почты, нам необходимо ввести в пользовательский интерфейс имена контактов, у которых нет адреса электронной почты. Я могу выполнить первую часть требования, но застрял на отображении имен контактов на странице visual force.

  1. Кнопка списка: BulkEmailTest, которая вызывает страницу firstVF visual force.
  2. Код firstVF:

<apex:страница standardController=»Contact» extensions=»FirstController» recordSetVar=»listRecs» action=»{!отправить}»> Отправляются электронные письма! window.history.back(); </apex:страница>

  1. Код FirstController: для упрощения кода я отредактировал фрагмент для контактов с электронной почтой, поскольку наш приоритет относится только к контактам без электронной почты.

    общедоступный с общим классом FirstController { общедоступный список noEmail {получить; установить;} общедоступный контакт контакт; общедоступный список allcontact {получить; установить;} Проверка идентификатора; общедоступный контакт getAllContact() { вернуть контакт; }

    ApexPages.StandardSetController setCon; ApexPages.Стандартный контроллер setCon1; общедоступная статическая логическая ошибка{get;set;} общедоступный FirstController(ApexPages.Контроллер StandardController) {

       setCon1 = controller;  
     

    }
    общедоступный FirstController(ApexPages.StandardSetController контроллер)
    {

       setCon = controller;  
     

    }
    отмена ссылки на общедоступную страницу ()
    {
    возвращает значение null;
    }
    общедоступный FirstController()
    {

    } общедоступная ссылка на страницу отправить() { noEmail = новый список (); установить идентификаторы = новый набор ();

    for(Целое число i=0;i<setCon.getSelected().size();i ){ ids.add(setCon.getSelected()[i].id); } if(ids.size() == 0){ err = true; возвращает значение null; }

    Список allcontact = [выберите адрес электронной почты, имя, имя, фамилию из контакта, где идентификатор В :ids]; для (Текущий контакт: allcontact) { system.debug(текущий); если (текущий.Email!= null) { Ссылка на страницу pdf = Page.pdfTest; pdf.getParameters().put(‘id’,(Строка)current.id ); system.debug(‘идентификатор равен:’ current.id ); pdf.setRedirect(true); возвращает pdf; } else// Нет электронной почты { system.debug(‘в else current’ текущий ); noEmail.add(текущий); // noEmail.add(текущий); system.debug(‘в else noemail’ noEmail ); }// e }

    если (noEmail.size()> 0) { Ссылка на страницу pdf1 = Страница.NoEmailVF;

    pdf1.getParameters().put(‘Name’, String.valueOf(noEmail)); system.debug(‘pring noEmail’ noEmail); pdf1.setRedirect(false); возвращает pdf1;

    } возвращает значение null;

    }
    }

  2. NoEmailVF визуальный код принудительной страницы

    <apex:контроллер страницы=»FirstController»> Электронные письма не отправляются указанным ниже контактам:

    Имя

    <вершина:повторить значение var=»cx»=»{!allcontact}» визуализированный=»true»>

    {!cx.name }

    Пожалуйста, обратите внимание, что электронные письма не отправляются выбранным донорам только в том случае, если они не делали никаких пожертвований за этот год или если у них нет указанного адреса электронной почты.

    Если вы все еще хотите получить пожертвования, сделанные в этом году, вы можете использовать кнопку «Печатная копия», указанную в записи о доноре, чтобы распечатать данные.

    .

Комментарии:

1. Похоже, вы хотите, чтобы этот список был заполнен значениями после вашей операции. Вы где-нибудь установили значение обновления? Страница не будет реагировать на ваши изменения, если вы не сообщите ей

2. Привет, спасибо за ваш ответ. Вот фрагмент моей попытки обновить страницу (добавлен параметр oncomplete для перезагрузки). Я по-прежнему не могу отобразить записи. Пожалуйста, поправьте меня, если я ошибаюсь. <apex:форма > <apex:pageBlock > <apex:значение командной кнопки =»записи» oncomplete=»окно. location.reload();»/> <apex:значение таблицы блокировки страницы=»{! allcontact}» var=»stu»> <apex:значение столбца =»{!stu.name }»/> </apex:таблица блокировки страниц> </apex:Блок страницы> </apex:форма>

3. Я также использовал приведенный ниже код <script> parent.window.opener.location.reload(); parent.window.close(); </script>

4. Пожалуйста, добавьте код в исходное сообщение и поместите туда весь соответствующий код

5. я обновил код с помощью onCompleteParameter, а также скрипта.

Ответ №1:

Не похоже, что у вас apex:commandButton есть какие-либо действия. Если у него нет action prop, контакт с вашим кодом Apex не устанавливается. Поэтому не oncomplete должно срабатывать.

Кроме того, если вы хотите обновить некоторые данные после завершения какого-либо вызова Apex, вы можете использовать reRender prop . Поместите ваши динамические данные в an apex:outputPanel (docs), укажите apex:outputPanel an id и передайте этот идентификатор reRender вашей кнопке.

См. apex:commandButton Документы

Комментарии:

1. Привет , @Abraham . Большое вам спасибо за ваш вклад. Но в итоге мы столкнулись с еще большей путаницей. Я снова отредактировал исходное сообщение, добавив целые фрагменты, которые можно напрямую использовать для реализации в новой демо-организации. Извините за путаницу. И еще раз большое вам спасибо за ваш вклад.