动态表单 - 加载与关闭

加载和关闭

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();
            }
        }));
    }
}


转载于:https://www.cnblogs.com/fyq891014/p/4188781.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
动态网页数据加载是指网页中的数据是通过JavaScript等脚本语言动态生成的,而不是在页面加载时就完全呈现出来的。要爬取动态加载的网页数据,可以使用以下两种方法: 1. 使用Selenium库:Selenium是一个自动化测试工具,也可以用于爬取动态加载的网页数据。它可以模拟用户在浏览器中的操作,包括点击按钮、填写表单等。通过Selenium,你可以启动一个浏览器实例,加载网页并等待数据加载完成后再进行爬取。 ```python from selenium import webdriver # 创建一个浏览器实例 driver = webdriver.Chrome() # 打开网页 driver.get("https://example.com") # 等待数据加载完成 # 这里可以根据网页的具体情况进行等待,例如等待某个元素出现 # driver.find_element_by_id("element_id") # 获取数据 data = driver.page_source # 关闭浏览器实例 driver.quit() # 处理数据 # ... ``` 2. 分析网络请求:动态加载的数据通常是通过Ajax等方式从服务器获取的。你可以使用开发者工具(如Chrome开发者工具)来分析网页的网络请求,找到获取数据的接口,并模拟发送请求获取数据。 ```python import requests # 发送网络请求获取数据 response = requests.get("https://api.example.com/data") # 处理响应数据 data = response.json() # 处理数据 # ... ``` 这两种方法都可以用于爬取动态加载的网页数据,具体选择哪种方法取决于网页的具体情况和个人偏好。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值