二开案例.SetFilterString多个过滤条件原创
金蝶云社区-齐111
齐111
12人赞赏了该文章 249次浏览 未经作者许可,禁止转载编辑于2024年05月28日 10:10:52

需求:过滤出字段为aaa或bbb的行。

grid.SetFilterString("F_UNW_Text_qtr = 'aaa' or F_UNW_Text_qtr = 'bbb' ")只有客户端支持。

可以二开变通实现。


image.png

1、单据体中增加字段FFilterText(字段名为空,不保存到数据库,仅用于标识行是否满足过滤条件)

image.png


2、根据行是否满足过滤条件,给字段赋值。再用SetFilterString过滤

using Kingdee.BOS.Core.Bill.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel;
using Kingdee.BOS.Util;
using System.ComponentModel;

namespace KD.TestNs
{

    [Description("SetFilterString多个过滤条件"), HotUpdate]
    public class SetFilterStringPlugIn : AbstractBillPlugIn
    {
        public override void ButtonClick(ButtonClickEventArgs e)
        {
            EntryGrid grid = this.View.GetControl("FEntity") as EntryGrid;

            //这种写法只有客户端支持,H5端无效
            //grid.SetFilterString("F_UNW_Text_qtr = 'aaa' or F_UNW_Text_qtr = 'bbb' ");

            //变通实现方法
            var entry = this.View.BusinessInfo.GetEntity("FEntity");
            var rows = this.Model.GetEntityDataObject(entry);
            for (int i = 0; i < rows.Count; i++)
            {
                var row = rows[i];
                if (row["F_UNW_Text_qtr"].ToString() == "aaa" || row["F_UNW_Text_qtr"].ToString() == "bbb")
                {
                    this.Model.SetValue("FFilterText", "true", i);
                }
            }
            grid.SetFilterString("FFilterText = 'true'");
        }
    }
}


注册插件:

image.png









赞 12