[二开案例] 引出支持移除行原创
金蝶云社区-Howhy
Howhy
2人赞赏了该文章 188次浏览 未经作者许可,禁止转载编辑于2022年11月04日 16:53:33

部分场景下,引出数据需要过滤,移除掉部分不需要的数据。

以下代码演示了,按引入模板引出时,移除单据体字段业务关闭等于“业务终止”的行。

参考以下代码:


public class ExportByImportPlugIn : AbstractListPlugIn
    {

        public override void BeforeExportDataNew(BeforeExportDataNewArgs e)
        {
            var ds = e.obj as DataSet;
            if (ds == null || ds.Tables.Count ==0) return;

            //有分组的单据,数据可能在Tables[1](跟据是否引出分组参数)
            var dt = ds.Tables[0];

            //判断行业务终止状态,需要在引入模板中设置此字段引出(BOS IDE需要配置此字段的允许引出)
            if (!dt.Columns.Contains("FMRPTerminateStatus")) return;

            Stack<int> removeStack = new Stack<int>();

            for (int i = 0; i < dt.Rows.Count; i++)
            {
                //如果需要修改表格的值,可以使用dt.Rows[i]["colName"] ="指定的值";
                if (dt.Rows[i]["FMRPTerminateStatus"]!=null 
                    && dt.Rows[i]["FMRPTerminateStatus"].ToString() == "业务终止")
                {
                    removeStack.Push(i);
                }                    
            }
            //使用栈,先移除后面再移除前面的
            while (removeStack.Count > 0)
            {
                var index = removeStack.Pop();
                dt.Rows.RemoveAt(index);
            }
        }


赞 2