Filter FormDataSource base on Enum in D365FO using X++


06/10/2020- duocnt    1038 Views    

TÓM TẮT.

Giả sử ta có:

 - 1 Enum InternalTransferType với 2 element: Transfer Return.

 - 2 DisplayMenuItem cùng Open chung 1 form.

    +    ProductInternalTransferBook với Enum Parameter:

            => Enum Type Parameter: InternalTransferType.

            => Enum Parameter: Transfer.

    +    ProductInternalReturnBook với Enum Parameter:

            => Enum Type Parameter: InternalTransferType.

            => Enum Parameter: Return.


 - 1 Table ProductInternalTransferBookHeader, trong đó field TransferType với  Enum Type InternalTransferType.


 - 1 Form ProductInternalTransferBook sử dụng table ProductInternalTransferBookHeader làm Root DataSource.


MỤC ĐÍCH

 - Khi mở form ProductInternalTransferBook  từ DisplayMenuItem ProductInternalTransferBook thì form chỉ view dữ liệu của Transfer.
 - Khi mở form ProductInternalTransferBook  từ DisplayMenuItem ProductInternalReturnBook thì form chỉ view dữ liệu của Return.



THỰC HIỆN

 - classDeclaration.

    InternalTransferType    _transferType;
    QueryBuildRange         _queryRange;


 - Phương thức init() của Form.

    /// <summary>
    ///
    /// </summary>
    public void init()
    {
        super();
        _transferType   =   element.args().parmEnum();
 
    }


 - Phương thức init() của DataSource.

        /// <summary>
        ///
        /// </summary>
        public void init()
        {
            super();
            _queryRange =   this.query()                                  .dataSourceTable(tableNum(ProductInternalTransferBookHeader))                                  .addRange(fieldNum(ProductInternalTransferBookHeader,TransferType));
        }

 - Phương thức executeQuery() của DataSource.

        /// <summary>
        ///
        /// </summary>
        public void executeQuery()
        {
            _queryRange.value(enum2Str(_transferType));
            super();
        }



Góp ý kiến

;
;