Как создать динамический фильтр c в динамике - PullRequest
0 голосов
/ 17 января 2020

Мне нужно создать динамику c, указанную в столбце Имя. Этот фильтр должен автоматически обновлять sh мои данные для каждого символа, который вводит пользователь. Он должен показывать данные, которые содержат значение пользователя.

Это код, который у меня есть. Что мне теперь делать?

    [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;
    }

1 Ответ

1 голос
/ 17 января 2020

Вот как я это реализовал, и он работает (на основе Создание пользовательских фильтров мгновенного поиска в Ax 2009 и 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();
    }
}

}
...