0

I need to create a dynamic filted for Name column. This filter need to refresh automatically my data for every character the user types. It should show data that contain the user value.

This is the code i have. What should i do now ?

    [DataSource]
class dbContacts
{
    /// <summary>
    ///
    /// </summary>
    public void init()
    {
        super();

        queryFilter = dbContacts_ds.query().addQueryFilter(dbContacts_ds.queryBuildDataSource(),"SNazwa");
    }

    /// <summary>
    ///
    /// </summary>
    public void executeQuery()
    {
        queryFilter.value(element.design().controlName("FormStringControl1").valueStr());

        super();

    }

    [DataField]
    class SNazwa 
    {
        /// <summary>
        ///
        /// </summary>
        /// <param name = "_formControl"></param>
        /// <param name = "_filterStr"></param>
        public void lookup(FormControl _formControl, str _filterStr)
        {

            super(_formControl, _filterStr);

            queryFilter = dbContacts_ds.query().addQueryFilter(dbContacts_ds.queryBuildDataSource(),"SNazwa");
        }
    [Control("String")]
class FormStringControl1
{
    /// <summary>
    ///
    /// </summary>
    /// <returns></returns>
    public boolean modified()
    {
        boolean ret;

        ret = super();

        dbContacts_ds.executeQuery();

        return ret;
    }
Nguyễn Văn Phong
  • 13,506
  • 17
  • 39
  • 56
Tweene
  • 257
  • 4
  • 16

1 Answers1

1

That's how I implemented it and it works (based on Creating custom instant search filters in Ax 2009 and 2012):

[Form]
public class FormContacts extends FormRun
{   
    QueryFilter queryFilter;
    FormStringControl FormStringControl1;

[DataSource]
class dbContacts
{
    public void init()
    {
        super();
        queryFilter = dbContacts_ds.query().addQueryFilter(dbContacts_ds.queryBuildDataSource(),"SNazwa");
    }

    public void executeQuery()
    {
        queryFilter.value("*"+element.design().controlName("FormStringControl1").valueStr()+"*");
        super();
    }
}

[Control("String")]
class FormStringControl1
{
    public boolean modified()
    {
        boolean ret;
        str nameFilter;
        ret = super();

        nameFilter = '*'+this.text()+'*';
        dbContacts_ds.filter(fieldnum(dbContacts,SNazwa),nameFilter);

        dbContacts_ds.executeQuery();

        return ret;
    }

    public void textChange()
    {
        super();
        this.modified();
    }

    public void enter()
    {
        super();
        this.setSelection(strlen(this.text()),strlen(this.text()));
    }
}

[Control("String")]
class dbContacts_SNazwa
{
    protected void initialize()
    {
        super();
    }
}

}
FH-Inway
  • 4,432
  • 1
  • 20
  • 37
Tweene
  • 257
  • 4
  • 16