using Kingdee.BOS.Core.Bill.PlugIn; using Kingdee.BOS.Core.Bill.PlugIn.Args; using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; using Kingdee.BOS.Util; using System; using System.ComponentModel; namespace MyCompany.MyProject.BillPlugIn { [Description("表单插件"), HotUpdate] public class FormPluginTemplate : AbstractBillPlugIn { public override void OnLoad(EventArgs e) { base.OnLoad(e); } public override void AfterBindData(EventArgs e) { base.AfterBindData(e); this.View.GetControl("FDate").Enabled = false; } public override void BarItemClick(BarItemClickEventArgs e) { base.BarItemClick(e); if (e.BarItemKey.EqualsIgnoreCase("MYBTN")) this.View.ShowMessage("按钮点击"); } public override void ButtonClick(ButtonClickEventArgs e) { base.ButtonClick(e); if (e.Key.EqualsIgnoreCase("F_BtnSave")) { var remark = this.View.Model.GetValue("F_Remark") as string; if (string.IsNullOrEmpty(remark)) { this.View.ShowMessage("请输入"); return; } this.View.ReturnToParentWindow(remark); this.View.Close(); } } public override void DataChanged(DataChangedEventArgs e) { base.DataChanged(e); if (e.Field == null) return; if (e.Field.Key.EqualsIgnoreCase("FQty")) { decimal qty = Convert.ToDecimal(this.View.Model.GetValue("FQty") ?? 0); decimal price = Convert.ToDecimal(this.View.Model.GetValue("FPrice") ?? 0); this.View.Model.SetValue("FAmount", qty * price); } } public override void BeforeF7Select(BeforeF7SelectEventArgs e) { base.BeforeF7Select(e); if (e.FieldKey.EqualsIgnoreCase("FMATERIALID")) e.ListFilterParameter.Filter = "FIsEnable = 1"; } /// /// 界面保存校验主路径:BeforeDoOperation + OperateKey=Save。 /// 禁止在表单插件使用 BeforeExecuteOperationTransaction。 /// 完整样例:snippets/SaveValidateSample.cs /// public override void BeforeDoOperation(BeforeDoOperationEventArgs e) { base.BeforeDoOperation(e); if (e.OperateKey.EqualsIgnoreCase("Save")) { string billNo = Convert.ToString(this.Model.DataEntity["BillNo"] /* PropertyName */); if (string.IsNullOrEmpty(billNo)) { e.Cancel = true; this.View.ShowErrMessage("编号不能为空"); } } } public override void AfterDoOperation(AfterDoOperationEventArgs e) { base.AfterDoOperation(e); } public override void BeforeSave(BeforeSaveEventArgs e) { base.BeforeSave(e); // 保存前校验备选入口;与 BeforeDoOperation(Save) 二选一或配合 // e.Cancel = true; } } }