private bool AssertContinueSelecting(AssistantEntity entity, AssistantQueryParameter parameter, string[] fields, out AssistantPrepareEventArgs eventContext) { eventContext = null; if (PreSelectItem != null) { eventContext = new AssistantPrepareEventArgs(); eventContext.Entity = entity; eventContext.Fields = fields; PreSelectItem(this, eventContext); return(!eventContext.Canceled); } return(true); }
public List <T> SelectList <T>(IConnection conn, string tablename, Criteria condition, Order[] orders, int offset, int count, object[] fields) { AssistantPrepareEventArgs args; AssistantEntity typedEntity = new AssistantEntity(typeof(T)); typedEntity.TableName = tablename; typedEntity.Criteria = condition; AssistantQueryParameter parameter = new AssistantQueryParameter(); parameter.Orders = orders; parameter.Offset = offset; parameter.Count = count; bool isListField = (null != fields) && (fields.Length > 0) && (fields[0] is ListField); List <T> result = new List <T>(); string[] actualFields = null; if (isListField) { actualFields = new string[fields.Length]; for (int i = 0; i < actualFields.Length; i++) { actualFields[i] = (fields[i] as ListField).FieldName; } } if (AssertContinueSelecting(typedEntity, parameter, (isListField ? actualFields : (fields as string[])), out args)) { ObjectManager oa = string.IsNullOrEmpty(tablename) ? _d1.GetObjectManager(typeof(T)) : _d1.GetObjectManager(tablename); if (isListField) { result = oa.MyList <T>(conn, condition, orders, offset, count, (fields as ListField[])); } else { result = oa.MyList <T>(conn, condition, orders, offset, count, (fields as string[])); } } else if (null != args.ContextData && !ReferenceEquals(parameter, args.ContextData)) { result = (args.ContextData as List <T>) ?? new List <T>(); } return(result); }