Skip to main content

Persist filter and keep filter expanded

Many of you have problably seen these blog posts

Persisting Filter conditions in EP Grid
http://blogs.msdn.com/b/epblog/archive/2009/08/29/persisting-filter-conditions-in-ep-grid.aspx

and

Always keep the Filter section expanded in AxGridView
http://community.dynamics.com/product/ax/axtechnical/b/axsolutionsmonkey/archive/2009/04/02/always-keep-the-filter-section-expanded-in-axgridview.aspx

They are excelent to use togather i.e. persist the filter and keep the filter open as well

I implemented two static methods in the EP class to persist the filter, then i can use oneliners to persist the filter of any dataset.

Also have in mind that if the PersistState of the ASP.NET dataset is set to false the filter is not persisted. So check out that the property is set to true, it is true by default







public static void packDataSet(Name _name, container _value, QueryRun _queryRun)
{
    SysLastValue    sysLastValue;
    ;

    ttsbegin;
    // Delete last saved query for the current dataset

    delete_from sysLastValue
        where sysLastValue.Company      == curext()
           && sysLastValue.UserId       == curuserid()
           && sysLastValue.RecordType   == UtilElementType::DataSet
           && sysLastValue.elementName  == _name
           && sysLastValue.DesignName   == _name;

    // If there is a new queryRun() object then serialize and save it
    // in the sys last value table
    // Put your datasource name


    if (_queryRun)
    {
        sysLastValue.RecId = 0;
        sysLastValue.Company        = curext();
        sysLastValue.UserId         = curuserid();
        sysLastValue.RecordType     = UtilElementType::DataSet;
        sysLastValue.ElementName    = _name;
        sysLastValue.DesignName     = _name;
        sysLastValue.value          =  _value;
        sysLastValue.insert();
    }

    ttscommit;
}



public static void unPackDataSet(Name _name, Query _query)
{
    SysLastValue    sysLastValue;
    Query           savedQuery;
    ;

    // get the last value from the sys last value table
    select firstonly sysLastValue
        where sysLastValue.Company      == curext()
           && sysLastValue.UserId       == curuserid()
           && sysLastValue.RecordType   == UtilElementType::DataSet
           && sysLastValue.ElementName  == _name
           && sysLastValue.DesignName   == _name;

    if (sysLastValue && sysLastValue.Value)
    {
       
// If there is an unpack error delete the saved query

        if (!SysQuery::unpackRangeAndSortorder(_query, sysLastValue.value))
        {
            ttsbegin;

            delete_from sysLastValue
                where sysLastValue.Company      == curext()
                   && sysLastValue.UserId       == curuserid()
                   && sysLastValue.RecordType   == UtilElementType::DataSet
                   && sysLastValue.ElementName  == _name
                   && sysLastValue.DesignName   == _name;

           ttscommit;
        }
    }
}

Comments

Popular posts from this blog

Dynamics 365 for operations – Table extensions

Background Extensions are a new way to add functionality and custom code to the D365 system without changing the standard code. In fact, Microsoft has announced that edit standard elements like those that we have done in the past will not be possible after 2017. By using extensions, we can achieve the same result by simply extending the standard system => EXTENSIONS. To read more about the difference between overlaying and extensions follow this link https://ax.help.dynamics.com/en/wiki/customization-overlayering-and-extensions/#extensions Extending tables By using table extensions, we can create a new table that adds new fields, field groups, indexes, mappings, relations, methods, subscribe to event handlers and more. When extending tables we need to follow the naming rule as such: <TABLENAME><_Extension> the compiler understands the _Extensions suffix and knows that the table in question is extending a table from the standard system. This gives us access ...

New Dynamics 365 for operations learning material

Latest Dynamics 365 for operations training material New learning material is now available on the Dynamics Learning portal 80773BE: Managing Users and Security in Microsoft Dynamics 365 for Operations 80924BE: Extending Elements, Code, and Event Handlers in Microsoft Dynamics 365 for Operations 80927BE: Form Methods and Controls in Microsoft Dynamics 365 for Operations 81002AE: Overview of the Sales and Marketing Module in Microsoft Dynamics 365 for Operations 81003AE: Set Up the Sales and Marketing Module in Microsoft Dynamics 365 for Operations 81004AE: Manage Sales with Sales and Marketing in Microsoft Dynamics 365 for Operations 81005AE: Manage Prospects in Sales and Marketing in Microsoft Dynamics 365 for Operations 81006AE: Manage Contact Information and Activities in Microsoft Dynamics 365 for Operations 81007AE: Create and Maintain Telemarketing and Campaigns in Microsoft Dynamics 365 for Operations 81008AE: Track Leads and Opportunities in Microsoft Dynamics 365 for Ope...