Dodaj metodę wyświetlania lub edycji za pomocą rozszerzenia w Dynamics 365
Opublikowano: 16 lutego 2025 11:55:50 UTC
W tym artykule wyjaśniam, jak za pomocą rozszerzenia klasy dodać metodę wyświetlania do tabeli i formularza w Dynamics 365 for Operations, podając również przykłady kodu X++.
Add Display or Edit Method via Extension in Dynamics 365
Chociaż planowanie wykorzystania metod wyświetlania i edycji w Dynamics powinno skłaniać do zastanowienia się nad możliwością zaprojektowania rozwiązania w inny sposób, to jednak czasami są one najlepszym rozwiązaniem.
W poprzednich wersjach Dynamics i Axapta tworzenie metod wyświetlania i edycji w tabelach i formularzach było bardzo proste, ale gdy niedawno musiałem utworzyć swoją pierwszą metodę edycji w Dynamics 365, odkryłem, że procedura jest nieco inna.
Istnieje ewidentnie kilka słusznych podejść, ale to, które uważam za najlepsze (zarówno pod względem intuicyjności, jak i ładności kodu), to użycie rozszerzenia klasy. Tak, możesz użyć rozszerzeń klasy, aby dodać metody do innych typów elementów niż klasy - w tym przypadku tabeli, ale działa to również w przypadku formularzy.
Najpierw utwórz nową klasę. Możesz nazwać ją jak chcesz, ale z jakiegoś powodu musi mieć sufiks „_Extension”. Powiedzmy, że musisz dodać metodę wyświetlania do CustTable, możesz na przykład nazwać ją MyCustTable_Extension.
Klasę należy ozdobić poleceniem ExtensionOf, aby system wiedział, co rozszerzasz, w następujący sposób:
public final class MyCustTable_Extension
{
}
Teraz możesz zaimplementować metodę wyświetlania w tej klasie, tak jak robiłeś to bezpośrednio w tabeli we wcześniejszych wersjach Dynamics — „this” odwołuje się nawet do tabeli, więc możesz uzyskać dostęp do pól i innych metod.
Na przykład klasa z prostą (i zupełnie bezużyteczną) metodą wyświetlania, która po prostu zwraca numer konta klienta, mogłaby wyglądać następująco:
public final class MyCustTable_Extension
{
public display CustAccount displayAccountNum()
{
;
return this.AccountNum;
}
}
Teraz, aby dodać metodę wyświetlania do formularza (lub rozszerzenia formularza, jeśli nie możesz edytować formularza bezpośrednio), musisz ręcznie dodać pole do formularza i upewnić się, że używasz prawidłowego typu (w tym przykładzie jest to ciąg znaków).
Następnie w kontrolce należy ustawić DataSource na CustTable (lub inną nazwę źródła danych CustTable), a DataMethod na MyCustTable_Extension.displayAccountNum (pamiętaj o uwzględnieniu nazwy klasy, w przeciwnym razie kompilator nie znajdzie metody).
I gotowe :-)
Aktualizacja: Nie jest już konieczne dołączanie nazwy klasy rozszerzenia podczas dodawania metody wyświetlania do formularza, ale w pierwotnym momencie publikacji tak było. Zostawiam tę informację tutaj na wypadek, gdyby niektórzy czytelnicy nadal korzystali ze starszych wersji.