近期处理一个小功能'物料清单-子项类型为'返回件'时更换背景色',特此留痕,如可借鉴记得点赞收藏(比心比心)
补充:需要做二开插件实现,插件逻辑为页面加载,'子项类型'值更新事件
代码参考:
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);
}
}
}
}
效果图:
推荐阅读