private void AddPropertyField <TProperty>(RenderTreeBuilder pBuilder, IMGridColumn pColumn, IMGridPropertyColumn pPropertyColumn, bool pIsInFilterRow, double pLeftOffset, BoundingBox pBoundingBox) { var attributes = mPropertyInfoCache[pPropertyColumn].GetAttributes()?.ToList() ?? new List <Attribute>(); if (pIsInFilterRow) { if (!pColumn.EnableFilter && !attributes.OfType <ReadOnlyAttribute>().Any()) { attributes.Add(new ReadOnlyAttribute()); } if (pColumn.EnableFilter && attributes.Any(a => a is ReadOnlyAttribute)) { attributes = attributes.Where(a => !(a is ReadOnlyAttribute)).ToList(); } } if (pColumn is IMGridComplexEditableColumn <TProperty> complex) { if (pIsInFilterRow) { pBuilder.OpenComponent <MComplexPropertyField <ExpandoObject, TProperty> >(5); } else { pBuilder.OpenComponent <MComplexPropertyField <T, TProperty> >(5); } pBuilder.AddAttribute(776, "Property", pPropertyColumn.Property); pBuilder.AddAttribute(777, "PropertyType", typeof(TProperty)); pBuilder.AddAttribute(778, "Attributes", attributes.ToArray()); if (complex.FormTemplate != null && !pIsInFilterRow || (pIsInFilterRow && pColumn.EnableFilter)) { pBuilder.AddAttribute(781, "Template", complex.FormTemplate); } pBuilder.AddStyleWithAttribute(784, Extensions.MFORM_IN_TABLE_ROW_TD_STYLE_ATTRIBUTE, pLeftOffset, pBoundingBox); pBuilder.CloseComponent(); } else { pBuilder.OpenComponent <MField>(790); pBuilder.AddAttribute(792, "Property", pPropertyColumn.Property); pBuilder.AddAttribute(793, "PropertyType", typeof(TProperty)); pBuilder.AddAttribute(794, "Attributes", attributes.ToArray()); pBuilder.AddStyleWithAttribute(976, Extensions.MFORM_IN_TABLE_ROW_TD_STYLE_ATTRIBUTE, pLeftOffset, pBoundingBox); pBuilder.CloseComponent(); } }
private void AddFieldGenerator(RenderTreeBuilder pBuilder, IMGridEditFieldGenerator <T> pFieldGenerator, bool pIsInFilterRow, double pLeftOffset, BoundingBox pBoundingBox) { pBuilder.OpenElement(804, "td"); pBuilder.AddStyleWithAttribute(805, "style", pLeftOffset, pBoundingBox); pBuilder.AddContent(806, pFieldGenerator.EditFieldTemplate(pLeftOffset, pBoundingBox, pIsInFilterRow)); pBuilder.CloseElement(); }