明细单据体颜色(背景色)设置原创
金蝶云社区-HN_楊華
HN_楊華
15人赞赏了该文章 128次浏览 未经作者许可,禁止转载编辑于2024年09月19日 22:26:56

近期处理一个小功能'物料清单-子项类型为'返回件'时更换背景色',特此留痕,如可借鉴记得点赞收藏(比心比心)

补充:需要做二开插件实现,插件逻辑为页面加载,'子项类型'值更新事件

代码参考:

using Kingdee.BOS.Core.Bill.PlugIn;

using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;

using Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel;

using Kingdee.BOS.Core.Metadata.EntityElement;

using Kingdee.BOS.Orm.DataEntity;

using Kingdee.BOS.Util;

using System;

using System.Collections.Generic;

using System.ComponentModel;


namespace XXXX.K3.XXX.Business.Plugin.ENG_BOM

{

    [HotUpdate]

    [Description("物料清单表单插件-明细行背景色设置")]

    public class ENG_BOM_Edit : AbstractBillPlugIn

    {

        //明细单据体标识

        private const string KEY_FEEENTITY = "FTreeEntity";


        /// <summary>

        /// 界面加载后

        /// </summary>

        /// <param name="e"></param>

        public override void AfterBindData(EventArgs e)

        {

            base.AfterBindData(e);

            //获取单据体集合

            Entity detailsEntity = this.View.BusinessInfo.GetEntity(KEY_FEEENTITY);

            DynamicObjectCollection dyDetailsEntity = this.View.Model.GetEntityDataObject(detailsEntity);

            int rowCount = dyDetailsEntity.Count;

            if (rowCount < 1)

            {

                return;

            }

            for (int i = 0; i < rowCount; i++)

            {

                //获取取当前行

                DynamicObject dyEntryRow = dyDetailsEntity[i];

                SetValueBackcolor(i, dyEntryRow);

            }

        }


        /// <summary>

        /// 值更新

        /// </summary>

        /// <param name="e"></param>

        public override void DataChanged(DataChangedEventArgs e)

        {

            base.DataChanged(e);

            string fieldKey = e.Field.Key.ToUpper();

            switch (fieldKey)

            {

                case "FMATERIALTYPE"://子项类型

                    EntryEntity entry = this.View.BillBusinessInfo.GetEntryEntity(KEY_FEEENTITY);

                    //获取指定一行的单据体数据

                    DynamicObject dyEntryRow = this.Model.GetEntityDataObject(entry, e.Row);

                    SetValueBackcolor(e.Row, dyEntryRow);

                    break;

                default:

                    break;

            }

        }


        /// <summary>

        /// 设置背景色

        /// </summary>

        private void SetValueBackcolor(int row, DynamicObject dyEntryRow)

        {

            //子项类型(标准件=1,返回件=2,替代件=3)

            string materialType = dyEntryRow["MATERIALTYPE"] != null ? Convert.ToString(dyEntryRow["MATERIALTYPE"]) : "0";

            bool isFHJ = materialType.EqualsIgnoreCase("2") ? true : false;

            if (isFHJ)

            {

                var grid = this.View.GetControl<EntryGrid>(KEY_FEEENTITY);

                //背景颜色

                List<KeyValuePair<int, string>> colors = new List<KeyValuePair<int, string>>();

                colors.Add(new KeyValuePair<int, string>(row, "#e899bd")); //红色(F00 红色)

                grid.SetRowBackcolor(colors);

            }

        }

    }

}

效果图:

image.png




赞 15