protected virtual void OnAfterGetObjectData(GetObjectDataAssistantEventArgs arg) { if (_AfterGetObjectData != null) { _AfterGetObjectData(this, arg); } }
private void onAfterSelectData(GetObjectDataAssistantEventArgs arg) { if (_AfterSelectData != null) { _AfterSelectData(this, arg); } }
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(); }