/// <summary> /// Devolve dicionário com Coluna (base de dados) e respectivo valor da propriedade /// </summary> private static Dictionary <string, object> getDicionarioColValores(ModeloBase <M> objModelBase) { Dictionary <string, object> dicProps = new Dictionary <string, object>(); PropertyInfo[] props = getObjectProperties(); // Varre as propriedades do modelo foreach (System.Reflection.PropertyInfo prop in props) { if (prop.PropertyType != null && prop.CanWrite) { AtributoPropriedade atbc = null; object[] atributos = prop.GetCustomAttributes(typeof(AtributoPropriedade), true); // Utiliza o AtributoPropriedade para obter o nome da coluna na Base de dados foreach (object item in atributos) { if (item is AtributoPropriedade) { atbc = (AtributoPropriedade)item; break; } } object objValue = prop.GetValue(objModelBase); // Se nao tem NomeColuna, o nome é o mesmo da propriedade. if (atbc != null && !string.IsNullOrEmpty(atbc.NomeColuna)) { dicProps.Add(atbc.NomeColuna.ToUpper(), objValue); } else { dicProps.Add(prop.Name.ToUpper(), objValue); } } } return(dicProps); }
protected virtual void ConfiguraColunas(DataGridView grdBase, Type typeModelo) { // Tamanho grdBase.RowTemplate.Height = 17; grdBase.AutoGenerateColumns = false; grdBase.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCells; grdBase.ScrollBars = ScrollBars.Both; PropertyInfo[] props = typeModelo.GetProperties(BindingFlags.Public | BindingFlags.Instance); foreach (PropertyInfo prop in props) { Attribute atrib = prop.GetCustomAttribute(typeof(AtributoPropriedade), true); if (atrib != null) { AtributoPropriedade atribProp = (AtributoPropriedade)atrib; if (atribProp.OcultaGrid) { continue; } string sCaption = atribProp.Caption; string sCollumn = prop.Name; grdBase.Columns.Add(sCollumn, sCaption); grdBase.Columns[sCollumn].DataPropertyName = sCollumn; if (atribProp.OrdemGrid > 0) { grdBase.Columns[sCollumn].DisplayIndex = atribProp.OrdemGrid - 1; } } } grdBase.Columns.GetLastColumn(DataGridViewElementStates.Visible, DataGridViewElementStates.None).AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; }
/// <summary> /// Retorna um dicionário com as propriedades e os atributos customizados. /// </summary> /// <typeparam name="tPe">Classe que será utilizada para obter as propriedades e atributos.</typeparam> /// <returns>Lista com as propriedades e os atributos customizados.</returns> /// <remarks>Michel Oliveira @ Prime Team Tecnologia 2015</remarks> public static Dictionary <PropertyInfo, AtributoPropriedade> ObterAtributoPropriedades <tPe>() { Dictionary <PropertyInfo, AtributoPropriedade> propriedadeAtributoClasse = new Dictionary <PropertyInfo, AtributoPropriedade>(); // foreach (var prop in typeof(tPe).GetProperties()) { AtributoPropriedade atrProp = null; // foreach (var attr in prop.GetCustomAttributes(false)) { atrProp = attr as AtributoPropriedade; // if (atrProp != null) { break; } } // propriedadeAtributoClasse.Add(prop, atrProp); } // return(propriedadeAtributoClasse); }