【017】启用U9系统参照的多选
侧边栏壁纸
  • 累计撰写 60 篇文章
  • 累计收到 2 条评论

【017】启用U9系统参照的多选

秋驰雪隙
2025-04-08 / 0 评论 / 9 阅读 / 正在检测是否收录...
每次要使用到料品、客户这些已经有的U9系统参照的多选的时候,都需要再次客开一个参照重新拉实体开启多选并在客开的参照代码里面组装多选ReferenceReturns返回。特此记录可以通过代码的手段改变系统参照变为多选。

在AfterEventBind注册ContentChanged事件

public void AfterEventBind()
{
    this.ItemMaster99.ContentChanged += ItemMaster99_TextChanged_Extend;
    this.ItemMaster99.AutoPostBack = true;
}

在AfterCreateChildControls中传递开启参照多选的参数值

public void AfterCreateChildControls()
{
    this.ItemMaster99.AddTypeParams("IsMultiRefTag", true);
}

在注册的ContentChanged事件中绑定多选返回的DataTable值

 private void ItemMaster99_TextChanged_Extend(object sender, EventArgs e)
{
    this.DataCollect();
    this.DataBinding();
    
    var item = (sender as UFSoft.UBF.UI.WebControlAdapter.UFWebReferenceAdapter);
    DataTable dt = item.GetReturnValuesTable(item);
    if (dt != null && dt.Rows.Count > 0)
    {
        List<string> ids = new List<string>();
        List<string> codes = new List<string>();
        List<string> names = new List<string>();
        foreach (DataRow dr in dt.Rows)
        {
            ids.Add(dr["ID"].ToString());
            codes.Add(dr["Code"].ToString());
            names.Add(dr["Name"].ToString());
        }
        // Record为当前Model的View的FocusedRecord
        // 等于-1的话在点击确定触发DataCollect的时候会把ItemMaster99.Key还原成-1。建议用Record.ItemMaster_Code进行条件筛选操作
        // 不等于-1的话,再次选择的多选记录,如果第一个记录的跟这次的ID一致则不会触发ContentChanged事件; 
        // Record.ItemMaster = -1;
        // this.ItemMaster99.Key = string.Join(",", ids); // 后续获取FocusedRecord的ItemMaster的ID串的时候,使用this.ItemMaster99.Key
        
        Record.ItemMaster_Code = string.Join(",", codes);
        Record.ItemMaster_Name = string.Join(",", names);
        this.ItemMaster99.Value = Record.ItemMaster_Code;
        this.ItemMaster99.Text = Record.ItemMaster_Name;
    }
}

客开参照多选

【004】客开参照多选
0

评论 (0)

取消