2016-05-18 3 views
0

Я хочу добавить метод отображения в источник данных формы listpage. Я не могу добавить прямо, потому что источники данных исходят из запроса AOT. Как мне это сделать? Спасибо за помощь. Метод отображения:Добавить способ отображения в форме списка

public display String255 UserNames() 
{ 
    DirPartyName  partyName; 
    DirPersonUser  personUser; 
    DirPerson   person; 
    UserInfo   userInfo; 
    String255   userList = ""; 



    partyName = DirPersonUser::userId2Name(this.UserId); 

    if(partyName) 
    { 
     while select Name from person 
      exists join personUser 
       where personUser.PersonParty == person.RecId 
        && personUser.User == this.UserId 
     { 
      userList += person.Name + ","; 
     } 
    } 

    if (!partyName) 
    { 
     while select Name from userInfo 
      where userInfo.Id == this.UserId 
     { 
      userList += userInfo.name + ","; 
     } 
    } 
     partyName = (select firstonly Name from userInfo where userInfo.Id == this.UserId).Name; 
    if (!partyName) 
     userList += this.UserId + ","; 

    strDel(userList,strLen(userList),1); 
    return userList; 
} 
+0

Вы спросили и ответили на этот вопрос сами уже в [AX Community Development/Customization/SDK Форум] (https://community.dynamics.com/ax/f/33/t/199943). Не могли бы вы добавить соответствующую информацию оттуда на свой вопрос и рассказать нам, какие у вас проблемы с вашим решением? –

+0

Это еще один вопрос. Теперь мне нужно сделать что-то вроде «item1, item2, item3 ..» для каждого элемента в форме списка. поэтому мне нужен метод отображения defintely –

+0

Из другого вопроса вы знаете, что метод отображения таблицы - это способ пойти. Пробовали ли вы это, и если да, с какой проблемой вы столкнулись? Обратите внимание, что в настоящее время ваш вопрос сформулирован как запрос на учебное пособие, которое не подходит для формата Q & A Stack Overflow (см. [Какие темы можно задать здесь?] (Http: // stackoverflow. ком/помощь/по теме)). –

ответ

0

дисплея у меня было то же требование, и мы сделали это с реальным физическим полем в таблице TrvExpTable после поля в таблице мы заполнить его на открытие страницы списка.

В Init(), до супер(), формы вы можете вызвать этот метод:

public void updateTrvExpTableApprovers() 
{ 
    TrvExpTable    trvExpTable; 
    TrvExpTrans    trvExpTrans; 
    WorkflowWorkItemTable workflowItemTable; 
    String255    approversNames; 
    HcmWorker    HcmWorker; 
    DirPersonUser   dirPersonUser; 
    Name     name; 

    ttsBegin; 
    while select forUpdate trvExpTable where trvExpTable.ApprovalStatus == TrvAppStatus::Pending 
    { 
     approversNames = ""; 
     while select userId from workflowItemTable 
      where workflowItemTable.RefRecId == trvExpTable.RecId && 
        workflowItemTable.RefTableId == trvExpTable.TableId && 
        workflowItemTable.Status == WorkflowWorkItemStatus::Pending 
     { 
      select firstonly hcmWorker 
       join firstonly PersonParty, ValidFrom, ValidTo from dirPersonUser 
        where dirPersonUser.User == workflowItemTable.userId && 
          hcmWorker.Person == dirPersonUser.PersonParty; 
      name = HcmWorker.name(); 

      if (!name) 
      { 
       name = workflowItemTable.userId; 
      } 

      if(approversNames) 
      { 
       if (!strScan(approversNames, name, 0, 255)) 
       { 
        approversNames += ', ' + name; 
       } 
      } 
      else 
      { 
       approversNames = name; 
      } 
     } 

     trvExpTable.ApproversNames = approversNames; 
     trvExpTable.update(); 
    } 

    update_recordSet trvExpTable 
     setting ApproversNames = "" 
     where trvExpTable.ApprovalStatus != TrvAppStatus::Pending && trvExpTable.ApproversNames != ""; 

    ttsCommit; 
} 

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

Также таким образом пользователь мог бы использовать CTRL + G в этом поле в сетке, что не является вариантом с использованием методов отображения.

С наилучшими пожеланиями, Kristian

+0

Спасибо за ваш ответ, так как я думаю, ваша идея состоит в том, чтобы создать новое поле в таблице и дать им значение с кодом. Спасибо за вашу помощь, я буду помнить об этом, я думал, что это сделать с помощью метода отображения (в соответствии с лучшими практиками), на данный момент я понимаю, что иногда мне следует игнорировать лучшие практики :) –

0

Почему бы вам не попробовать писать метод отображения в методе таблицы как использование же в списке страницы? Это хороший вариант. Если вы все еще хотите написать метод отображения на уровне источника данных формы, измените способ отображения, как показано ниже.

публичный показ String255 USERNAMES (DataSourcetablename _tableName) {....

Использование _tableName, где когда-либо вы используете "это".

Вы можете обратиться в формуляр BuyEditLines в стандартном томе 2012 года и посмотреть дисплей ImageRes backOrder (PurchaseParmLine _purchParmLine).

Для получения более подробной информации о методе click here

+0

вы не можете просто добавить методы в источники данных, которые поступают из запроса AOT. –

+0

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

Смежные вопросы