OnLoad
页面加载。该事件在BeforeBindData前触发,并且不受StyleManager管理,在此事件设置单据字段的可见性和锁定性无效。
OnLoad时,数据已经获取到,通常我们在此事件处理一些数据设置。
例如:过滤界面插件设置缺省值和页签可见性。
public class SaleCollectFilter : AbstractCommonFilterPlugIn
{
public override void OnLoad(EventArgs e)
{
base.OnLoad(e);
//设置日期缺省值
this.View.Model.SetValue("FStartDate", dateFrom.ToString("yyyy-MM-dd"));
this.View.Model.SetValue("FEndDate", dateTo.ToString("yyyy-MM-dd"));
//隐藏过滤界面排序页签
this.View.StyleManager.SetVisible("FTab_P21", null, false);
}
}
列表界面隐藏分组滑动控件。
public class SPMPromotionPolicyList : AbstractListPlugIn
{
public override void OnLoad(EventArgs e)
{
base.OnLoad(e);
// 隐藏分组滑动控件(默认不展开)
this.View.GetControl<SplitContainer>("FSpliter").HideFirstPanel(true);
this.View.GetControl("FPanel").SetCustomPropertyValue("BackColor", "#FFEEEEEE");
}
}
注:该事件在每次UpdateView()时候都会调用。
BeforeClosed
页面关闭前插件。对于单个表单关闭,该插件基本不需要处理。对于多个表单交互,或者嵌入式表单,通常需要关闭窗体时,返回数据时,通过该插件实现。
如:关闭时刷新父窗体。
public override void BeforeClosed(BeforeClosedEventArgs e)
{
object isDataChanged = this.View.OpenParameter.GetCustomParameter("Changed");
if (isDataChanged != null && (bool)isDataChanged)
{
this.View.ParentFormView.Refresh();
this.View.SendDynamicFormAction(this.View.ParentFormView);
}
base.BeforeClosed(e);
}
关闭时传递数据到父窗体。
public override void BeforeClosed(BeforeClosedEventArgs e)
{
this.View.ReturnToParentWindow(_data);
base.BeforeClosed(e);
}
关闭窗体判断数据是否修改并提示保存。
/// <summary>
/// 界面关闭前事件:判断用户是否修改了数据,提示保存
/// </summary>
/// <param name="e"></param>
public override void BeforeClosed(BeforeClosedEventArgs e)
{
if (this._dataChanged == true) // 仅关注模型数据发生了改变的情况
{
e.Cancel = true;
string msg = "内容已经修改,是否保存?";
this.View.ShowMessage(msg, MessageBoxOptions.YesNoCancel, new Action<MessageBoxResult>((result) =>
{
if (result == MessageBoxResult.Yes) // 保存
{
this.View.GetControl("FDesignPanel").InvokeControlMethod("Save");
}
else if (result == MessageBoxResult.No) // 不要保存
{
this._dataChanged = false;
this.View.Close();
}
}));
}
}