public void Constructor_ValidType_IdentifiesMethod() { var properties = new MemberInfoCollection<PropertyInfo>(typeof(ContentTypeDescriptor)); Assert.IsFalse(properties.Contains("IsTypeOf")); //This is a method, not a property }
public void Initialize(MemberInfoCollection members) { Members.Clear(); if (members != null) { int size = 0; int rowIndex = 0; int columnIndex = 0; foreach (MemberInfo member in members) { if (Type == AreaType.RowsArea) { this.AddRowMember(Members, member, columnIndex, rowIndex, out size, 0); rowIndex += size; } if (Type == AreaType.ColumnsArea) { this.AddColumnMember(Members, member, columnIndex, rowIndex, out size, 0); columnIndex += size; } } } }
public void Constructor_ValidType_IdentifiesDerivedProperty() { var properties = new MemberInfoCollection<PropertyInfo>(typeof(ContentTypeDescriptor)); Assert.IsTrue(properties.Contains("Key")); //Inherited string property }
public void Constructor_ValidType_IdentifiesProperty() { var properties = new MemberInfoCollection<PropertyInfo>(typeof(ContentTypeDescriptor)); Assert.IsTrue(properties.Contains("AttributeDescriptors")); //First class collection property Assert.IsFalse(properties.Contains("InvalidPropertyName")); //Invalid property }
public static ModificationResult Update <T>(this Session session, Expression <Func <T> > evaluator, CriteriaOperator criteria) where T : IXPObject { if (ReferenceEquals(criteria, null)) { criteria = CriteriaOperator.Parse("True"); } XPClassInfo classInfo = session.GetClassInfo(typeof(T)); /// if you are using DevExpress 11.2 or earlier /// var batchWideData = new BatchWideDataHolder(session); var batchWideData = new BatchWideDataHolder4Modification(session); int recordsAffected = (int)session.Evaluate <T>(CriteriaOperator.Parse("Count()"), criteria); /// Parse the Expression. /// Expect to find a single MemberInitExpression. PropertyValueStore propertyValueStore = null; int memberInitCount = 1; evaluator.Visit <MemberInitExpression>(expression => { if (memberInitCount > 1) { throw new NotImplementedException("Only a single MemberInitExpression is allowed for the evaluator parameter."); } memberInitCount++; propertyValueStore = CreatePropertyValueStore(classInfo, expression); return(expression); }); MemberInfoCollection properties = new MemberInfoCollection(classInfo, propertyValueStore.Select(x => x.Key).ToArray()); /// if you are using DevExpress 13.1.5 or earlier /// List<ModificationStatement> collection = UpdateQueryGenerator.GenerateUpdate(classInfo, properties, criteria, batchWideData); List <ModificationStatement> collection = UpdateQueryGenerator.GenerateUpdate(classInfo, properties, ObjectGeneratorCriteriaSet.GetCommonCriteriaSet(criteria), batchWideData); foreach (UpdateStatement updateStatement in collection.OfType <UpdateStatement>()) { for (int i = 0; i < updateStatement.Parameters.Count; i++) { // support for converter var valueConverter = propertyValueStore[i].Key.Converter; Object value = (valueConverter != null) ? valueConverter.ConvertToStorageType(propertyValueStore[i].Value) : propertyValueStore[i].Value; if (value is IXPObject) { updateStatement.Parameters[i].Value = ((IXPObject)(value)).ClassInfo.GetId(value); } else { updateStatement.Parameters[i].Value = value; } } updateStatement.RecordsAffected = recordsAffected; } return(session.DataLayer.ModifyData(collection.ToArray <ModificationStatement>())); }
protected override MemberInfoCollection GetPropertiesListForUpdateInsert(object theObject, bool isUpdate) { var supportChangedMembers = theObject as ISupportChangedMembers; if (supportChangedMembers != null && !IsNewObject(supportChangedMembers)) { XPClassInfo ci = GetClassInfo(supportChangedMembers); var changedMembers = new MemberInfoCollection(ci); var memberInfos = base.GetPropertiesListForUpdateInsert(supportChangedMembers, isUpdate).Where(m => MemberHasChanged(supportChangedMembers, m)); changedMembers.AddRange(memberInfos); return changedMembers; } return base.GetPropertiesListForUpdateInsert(theObject, isUpdate); }
protected override MemberInfoCollection GetPropertiesListForUpdateInsert(object theObject, bool isUpdate) { if (theObject is ISupportChangedMembers && !IsNewObject(theObject)) { XPClassInfo ci = GetClassInfo(theObject); var changedMembers = new MemberInfoCollection(ci); changedMembers.AddRange(base.GetPropertiesListForUpdateInsert(theObject, isUpdate).Where(m => m.HasAttribute(typeof (PersistentAttribute)) || m.IsKey || m is ServiceField || ((ISupportChangedMembers) theObject).ChangedMemberCollector.MemberInfoCollection.Contains(m))); return changedMembers; } return base.GetPropertiesListForUpdateInsert(theObject, isUpdate); }
private void ConstruireItems() { Items.Clear(); _MembreGUID.Clear(); MemberInfoCollection mic = MemberInfoCollection.GetAll(); foreach (MemberInfo mi in mic) { ListItem li = new ListItem(mi.Nom + "/" + mi.Prenom + "/" + mi.Societe); Items.Add(li); _MembreGUID.Add(mi.MembreGUID); } }
protected override MemberInfoCollection GetPropertiesListForUpdateInsert(object theObject, bool isUpdate) { if (theObject is ISupportChangedMembers && !IsNewObject(theObject)) { XPClassInfo ci = GetClassInfo(theObject); var changedMembers = new MemberInfoCollection(ci); changedMembers.AddRange(base.GetPropertiesListForUpdateInsert(theObject, isUpdate).Where(m => m.HasAttribute(typeof(PersistentAttribute)) || m.IsKey || m is ServiceField || ((ISupportChangedMembers)theObject).ChangedMemberCollector.MemberInfoCollection.Contains(m))); return(changedMembers); } return(base.GetPropertiesListForUpdateInsert(theObject, isUpdate)); }
protected override MemberInfoCollection GetPropertiesListForUpdateInsert(object theObject, bool isUpdate, bool addDelayedReference) { var supportChangedMembers = theObject as ISupportChangedMembers; if (supportChangedMembers != null && !IsNewObject(supportChangedMembers)) { XPClassInfo ci = GetClassInfo(supportChangedMembers); var changedMembers = new MemberInfoCollection(ci); var memberInfos = base.GetPropertiesListForUpdateInsert(supportChangedMembers, isUpdate, addDelayedReference).Where(m => MemberHasChanged(supportChangedMembers, m)); changedMembers.AddRange(memberInfos); return(changedMembers); } return(base.GetPropertiesListForUpdateInsert(theObject, isUpdate, addDelayedReference)); }
protected override MemberInfoCollection GetPropertiesListForUpdateInsert(object theObject, bool isUpdate, bool addDelayedReference) { var defaultMembers = base.GetPropertiesListForUpdateInsert(theObject, isUpdate, addDelayedReference); if (TrackPropertiesModifications && isUpdate) { var members = new MemberInfoCollection(GetClassInfo(theObject)); foreach (var mi in base.GetPropertiesListForUpdateInsert(theObject, true, addDelayedReference)) { if (mi is ServiceField || mi.GetModified(theObject)) { members.Add(mi); } } return(members); } return(defaultMembers); }
protected override MemberInfoCollection GetPropertiesListForUpdateInsert(object theObject, bool isUpdate) { if (theObject is ISupportChangedMembers && !this.IsNewObject(theObject)) { XPClassInfo ci = GetClassInfo(theObject); MemberInfoCollection changedMembers = new MemberInfoCollection(ci); foreach (XPMemberInfo m in base.GetPropertiesListForUpdateInsert(theObject, isUpdate)) { //If it is a servicefield this is required (OptimisticLockingField, GCRecord etc) if (m.HasAttribute(typeof(PersistentAttribute)) || m.IsKey || m is ServiceField || ((ISupportChangedMembers)theObject).ChangedMembers.Contains(m)) { changedMembers.Add(m); } } return changedMembers; } return base.GetPropertiesListForUpdateInsert(theObject, isUpdate); }
public ChangedMemberCollector(XPBaseObject xpBaseObject) { _memberInfoCollection=new MemberInfoCollection(xpBaseObject.ClassInfo); _xpBaseObject = xpBaseObject; }
private MemberInfoCollection CreateFields(int axisNum) { if (axisNum == 0) m_Columns_LowestMembers.Clear(); if (axisNum == 1) m_Rows_LowestMembers.Clear(); MemberInfoCollection fields = new MemberInfoCollection(null); Dictionary<int, List<MemberInfo>> tmp = new Dictionary<int, List<MemberInfo>>(); if (m_CellSet_Descr != null && m_CellSet_Descr.Axes.Count > axisNum) { int position_Index = 0; foreach (PositionData pos in m_CellSet_Descr.Axes[axisNum].Positions) { MemberInfoCollection container = fields; int depth = pos.Members.Count; for (int i = 0; i < pos.Members.Count; i++) { List<MemberInfo> line = null; if (tmp.ContainsKey(i)) { line = tmp[i]; } else { line = new List<MemberInfo>(); tmp.Add(i, line); } MemberData member = m_CellSet_Descr.Axes[axisNum].Members[pos.Members[i].Id]; // Если PARENT_UNIQUE_NAME запрашивалось то берем его, иначе будем спрашивать у куба String parentUniqueName = GetMemberPropertyValue(member, "PARENT_UNIQUE_NAME"); // Если родитель является DrilledDown, то данный элемент должен попасть в коллекцию DrilledDownChildren MemberInfo parentInfo = null; try { if (!String.IsNullOrEmpty(parentUniqueName)) { int posIndex = ReversePos(line, parentUniqueName); if (posIndex > -1) { parentInfo = line[posIndex]; } if (parentInfo != null && parentInfo.DrilledDown) { // Если линия не нулевая. То объект должен попать в коллекцию DrilledDown только в том случае если и владелец данной коллекции и сам элемент, который мы проверяем пересекаются с одним и тем же элементом // Ситуацию можно увидеть в запросе /*select [Measures].[Internet Sales Amount] on 0, {([Date].[Calendar].[Calendar Year].&[2001], [Product].[Product Categories].[Category].[Bikes]), ([Date].[Calendar].[Calendar Semester].&[2001]&[2], [Product].[Product Categories].[Subcategory].[Mountain Bikes]), ([Date].[Calendar].[Calendar Year].&[2001], [Product].[Product Categories].[Category].[Clothing])} on 1 from [Adventure Works]*/ if (i == 0 || (i > 0 && tmp[i - 1][posIndex] != null && tmp[i - 1][position_Index] != null && tmp[i - 1][posIndex] == tmp[i - 1][position_Index])) { container = parentInfo.DrilledDownChildren; } } } else { // Если это нулевой элемент на линии, то он однозначно должен находиться в коллекции Children // Иначе он может попасть в коллекцию DrilledDown если у предыдущего элемента установлен флаг DrilledDown if (position_Index > 0) { MemberInfo prevInLine = line[line.Count - 1]; if (prevInLine != null && prevInLine.UniqueName != member.UniqueName && prevInLine.DrilledDown) { // Для вычисляемых элементов свойство DrilledDown работает неправильно. И в этом случае считаем что для того чтобы элемент попал в коллекцию DrilledDown у него должна быть и глубина уровня больше чем у предыдущего if (prevInLine.LevelDepth < member.LevelDepth) { // Если линия не нулевая. То объект должен попать в коллекцию DrilledDown только в том случае если и владелец данной коллекции и сам элемент, который мы проверяем пересекаются с одним и тем же элементом // Ситуацию можно увидеть в запросе /*select [Measures].[Internet Sales Amount] on 0, {([Date].[Calendar].[Calendar Year].&[2001], [Product].[Product Categories].[Category].[Bikes]), ([Date].[Calendar].[Calendar Semester].&[2001]&[2], [Product].[Product Categories].[Subcategory].[Mountain Bikes]), ([Date].[Calendar].[Calendar Year].&[2001], [Product].[Product Categories].[Category].[Clothing])} on 1 from [Adventure Works]*/ if (i == 0 || (i > 0 && tmp[i - 1][line.Count - 1] != null && tmp[i - 1][position_Index] != null && tmp[i - 1][line.Count - 1] == tmp[i - 1][position_Index])) { container = prevInLine.DrilledDownChildren; } } else { // Пытаемся исправить то, что для вычисляемых элементов свойство DrilledDown работает неправильно. prevInLine.DrilledDown = false; } } } } } catch (System.NotSupportedException) { } // Если элемент существует, то он должен быть последним // Если он окажется не последним, то это значит что эти элементы объединению не подлежат и нужно создавать новый элемент MemberInfo field = null; if (line.Count > 0) field = line[line.Count - 1]; // Элементы последней линии объединению не подлежат if (field == null || field.UniqueName != member.UniqueName || i == (depth - 1) || (field.Parent != null && container.m_Owner != null && field.Parent != container.m_Owner)) { field = CreateMemberInfo(member); line.Add(field); // Важно чтобы добавление в контейнер было после добавления в линию, т.к. в Add идет установка Parent container.Add(field); if (i == (depth - 1)) { if (axisNum == 0) m_Columns_LowestMembers.Add(field); if (axisNum == 1) m_Rows_LowestMembers.Add(field); } } else { line.Add(field); } if (field != null && !field.IsCalculated) { field.DrilledDown = field.DrilledDown | pos.Members[i].DrilledDown; } container = field.Children; } position_Index++; } } return fields; }
protected void Page_Load(object sender, System.EventArgs e) { if (IsPostBack == false) { /* L'alphabet */ DropDownListLettre.Items.Add("---"); string _alpha = "A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z"; string[] alpha = _alpha.Split(','); foreach (string s in alpha) { DropDownListLettre.Items.Add(s); } if (User.IsInRole("Administrateur")) { /* Trouver les societes */ DropDownListSociete.Items.Add("Toutes les sociétés"); MemberInfoCollection membres = MemberInfoCollection.GetAll(); foreach (MemberInfo m in membres) { ListItem item = new ListItem(m.Societe); if (!DropDownListSociete.Items.Contains(item)) { DropDownListSociete.Items.Add(item); } } } else { DropDownListSociete.Items.Add(SessionState.MemberInfo.Societe); DropDownListSociete.Enabled = false; RolloverLinkRegister.Visible = false; GridViewMembers.Columns[colonneCommandField].Visible = false; GridViewMembers.Columns[colonneEditField].Visible = false; } sortDirection = SortDirection.Descending; GridViewMembers.DataSource = BuildData(); GridViewMembers.DataBind(); } // Formulaire en mode print if (Request.QueryString["print"] != null) { GridViewMembers.Columns[colonneCommandField].Visible = false; GridViewMembers.Columns[colonneEditField].Visible = false; GridViewMembers.Columns[colonneTelephone].Visible = true; GridViewMembers.Columns[colonneAdresse].Visible = true; GridViewMembers.Columns[colonneEmail].Visible = true; GridViewMembers.Columns[colonneHyperLinkEmail].Visible = false; GridViewMembers.Columns[colonneDateCreation].Visible = true; GridViewMembers.Width = Unit.Percentage(100); } else { GridViewMembers.Columns[colonneTelephone].Visible = false; GridViewMembers.Columns[colonneAdresse].Visible = false; GridViewMembers.Columns[colonneEmail].Visible = false; // DEBUG GridViewMembers.Columns[ colonneDateCreation ].Visible = false; } if (Request.QueryString["QuestionnaireID"] != null) { int questionnaireID = int.Parse(Request.QueryString["QuestionnaireID"]); SessionState.Questionnaire = SessionState.Questionnaires.FindByID(questionnaireID); Response.Redirect("~/Contact/Email.aspx"); } }
public ChangedMemberCollector(XPBaseObject xpBaseObject) { _memberInfoCollection = new MemberInfoCollection(xpBaseObject.ClassInfo); _xpBaseObject = xpBaseObject; }