protected virtual void OnAfterGetObjectData(GetObjectDataAssistantEventArgs arg)
 {
     if (_AfterGetObjectData != null)
     {
         _AfterGetObjectData(this, arg);
     }
 }
 private void onAfterSelectData(GetObjectDataAssistantEventArgs arg)
 {
     if (_AfterSelectData != null)
     {
         _AfterSelectData(this, arg);
     }
 }
Beispiel #3
0
        void dataAssistant_AfterGetObjectData(object sender, GetObjectDataAssistantEventArgs arg)
        {
            if (arg.SelectedRows == null || arg.SelectedRows.Length == 0)
            {
                return;
            }
            if (arg.SelectedRows.Length > SHOW_MSG_COUNT)
            {
                var re = MB.WinBase.MessageBoxEx.Question(string.Format("当前需要批量增加的数据量有{0}行,请分批导入,继续将花费几十秒的时间.是否继续?", arg.SelectedRows.Length));
                if (re != System.Windows.Forms.DialogResult.Yes)
                {
                    return;
                }
            }
            try {
                //edit by chendc 2010-07-08 性能优化调整
                Dictionary <string, MB.Util.Emit.DynamicPropertyAccessor> orgAcs = new Dictionary <string, Util.Emit.DynamicPropertyAccessor>();
                Dictionary <string, MB.Util.Emit.DynamicPropertyAccessor> desAcs = new Dictionary <string, Util.Emit.DynamicPropertyAccessor>();

                object orgEntity = arg.SelectedRows[0];

                foreach (MB.WinBase.Common.EditCtlDataMappingInfo info in _ColumnEditCfgInfo.EditCtlDataMappings)
                {
                    if (!MB.Util.MyReflection.Instance.CheckObjectExistsProperty(orgEntity, info.SourceColumnName))
                    {
                        MB.Util.TraceEx.Write(string.Format("源数据中不包含属性{0}", info.SourceColumnName));
                        continue;
                    }
                    orgAcs.Add(info.ColumnName, new Util.Emit.DynamicPropertyAccessor(orgEntity.GetType(), info.SourceColumnName));
                    desAcs.Add(info.ColumnName, new Util.Emit.DynamicPropertyAccessor(typeof(T), info.ColumnName));
                }

                List <T>    listFromDataAssistance = new List <T>(); //从数据小助手获取的数据列表。
                IClientRule uiRule  = _EditForm.ClientRuleObject as IClientRule;
                IList       newList = null;
                if (_IsEntityBatchCreatedFromServer)
                {
                    newList = uiRule.CreateNewEntityBatch(_dataInDocType, arg.SelectedRows.Length); //从服务端批量新增对象, 为了获取服务端赋予对象的默认值
                }
                int newListIndex = 0;
                foreach (object row in arg.SelectedRows)
                {
                    //这个AddNew 主要是产生一个AddNew的事件, 通过这个事件从服务器端返回一个新的对象并把
                    //该集合中创建的对象替换掉,在真正使用中 如果存在性能的问题,可以修改为从本地创建。
                    //T newEntity = _DetailEntitys.AddNew();
                    T newEntity = null;
                    if (_IsEntityBatchCreatedFromServer)
                    {
                        newEntity = (T)newList[newListIndex];
                        listFromDataAssistance.Add(newEntity);
                    }
                    else
                    {
                        newEntity = _DetailEntitys.AddNew();
                    }

                    foreach (var acKey in orgAcs.Keys)
                    {
                        object val = orgAcs[acKey].Get(row);
                        if (val == null)
                        {
                            continue;
                        }

                        desAcs[acKey].Set(newEntity, val);
                    }
                    //foreach (MB.WinBase.Common.EditCtlDataMappingInfo info in _ColumnEditCfgInfo.EditCtlDataMappings) {
                    //    object dataObject = row;

                    //    if (!MB.Util.MyReflection.Instance.CheckObjectExistsProperty(dataObject, info.SourceColumnName)) {
                    //        MB.Util.TraceEx.Write(string.Format("源数据中不包含属性{0}", info.SourceColumnName));
                    //        continue;
                    //    }
                    //    object val = MB.Util.MyReflection.Instance.InvokePropertyForGet(dataObject, info.SourceColumnName);
                    //    if (val == null) continue;

                    //    MB.Util.MyReflection.Instance.InvokePropertyForSet(newEntity, info.ColumnName, val.ToString());

                    //},
                    newListIndex++;
                }

                if (_IsEntityBatchCreatedFromServer)
                {
                    onAfterGetDataFromDataAssistance(new AfterGetDataFromDataAssistanceEventArgs <T>(listFromDataAssistance.ToArray()));
                }
            }
            catch (Exception ex) {
                throw new MB.Util.APPException("批量增加数据有误,请重试!", MB.Util.APPMessageType.DisplayToUser, ex);
            }
        }
 void listView_AfterSelectData(object sender, GetObjectDataAssistantEventArgs arg)
 {
     this.DialogResult = System.Windows.Forms.DialogResult.OK;
     OnAfterGetObjectData(new GetObjectDataAssistantEventArgs(arg.SelectedRows));
     this.Close();
 }