예제 #1
0
        /// <summary>
        /// Obtem o tipo da linha selecionada. Gera alertas
        /// </summary>
        /// <param colName="gridView"></param>
        /// <returns></returns>
        public static T ConvertToObject <T>(DataGridView dataGridView) where T : class
        {
            int selectRowsCount = dataGridView.SelectedRows.Count;

            if (IsEmpty(dataGridView))
            {
                MessageIts.Mensagem("Tabela vazia.");
            }

            else if (IsSelectRow(dataGridView) == false)
            {
                MessageIts.Mensagem("Nenhuma linha selecionada");
            }

            else
            {
                try
                {
                    T linha = (dataGridView.SelectedRows[0].DataBoundItem as T);
                    return(linha);
                }
                catch (IndexOutOfRangeException ex)
                {
                    MessageIts.Mensagem("Falha ao obter o objeto do DataGridView" + ex.StackTrace + "\n" + ex.Message);
                }
            }
            return(null);
        }
예제 #2
0
        /// <summary>
        /// Converter um IEnumerable para DataTable
        /// </summary>
        /// <typeparam colName="T"></typeparam>
        /// <param colName="collection"></param>
        /// <returns></returns>
        public static DataTable ConvertToDataTable <T>(IEnumerable <T> collection) where T : new()
        {
            DataTable dataTable = new DataTable();

            try
            {
                Type           impliedType = typeof(T);
                PropertyInfo[] _propInfo   = impliedType.GetProperties();
                foreach (PropertyInfo pi in _propInfo)
                {
                    dataTable.Columns.Add(pi.Name, pi.PropertyType);
                }

                foreach (T item in collection)
                {
                    DataRow newDataRow = dataTable.NewRow();
                    newDataRow.BeginEdit();
                    foreach (PropertyInfo pi in _propInfo)
                    {
                        newDataRow[pi.Name] = pi.GetValue(item, null);
                    }
                    newDataRow.EndEdit();
                    dataTable.Rows.Add(newDataRow);
                }
            }
            catch (Exception ex)
            {
                MessageIts.Mensagem("Falha ao gerar DataTable através da lista\n" + ex.StackTrace + "\n" + ex.Message);
            }
            return(dataTable);
        }
예제 #3
0
        /// <summary>
        ///Converte uma lista tipada para um DataTable por reflexão.
        ///
        /// A class POCO não pode conter propriedas de outras classes.
        ///
        /// Exemplo:
        ///     CentroCusto
        ///         string nome;
        ///         ....
        ///         //considerando uma classe com chave estrangeira
        ///         Lancamento lancamento;
        ///          public virtual ICollection<Lancamento> Lancamentos;
        ///     Caso haja o metódo irá falhas
        ///
        /// </summary>
        /// <typeparam colName="T"></typeparam>
        /// <param colName="lista"></param>
        /// <returns></returns>
        public static DataTable ConvertToDataTable <T>(List <T> lista) where T : new()
        {
            if (lista == null)
            {
                MessageIts.Mensagem("Lista não informada na conversão para DataTable");
                return(new DataTable());
            }
            DataTable dataTable = new DataTable(typeof(T).Name);

            try
            {
                //Get all the properties
                PropertyInfo[] Props = typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance);

                foreach (PropertyInfo prop in Props)
                {
                    //Setting column names as Property names
                    dataTable.Columns.Add(prop.Name);
                }

                foreach (T item in lista)
                {
                    try
                    {
                        var values = new object[Props.Length];

                        for (int i = 0; i < Props.Length; i++)
                        {
                            //inserting property values to datatable rows
                            values[i] = Props[i].GetValue(item, null);
                        }

                        dataTable.Rows.Add(values);
                    }
                    catch (Exception ex)
                    {
                        MessageIts.Mensagem("Falha na conversão do paramentro da lista em dados\n"
                                            + ex.StackTrace + "\n\n" + ex.Message);

                        throw ex;
                    }
                }
            }
            catch (NullReferenceException ex)
            {
                MessageIts.Mensagem("Falha ao gerar DataTable através da lista\n" + ex.StackTrace + "\n" + ex.Message, "Falha");
            }

            //put first breakpoint here and check datatable
            return(dataTable);
        }
예제 #4
0
        /// <summary>
        /// Nome das colunas do DataGridView
        /// </summary>
        /// <param colName="gridView"></param>
        /// <returns></returns>
        public static string[] GetColumnsName(DataGridView gridView)
        {
            int t = gridView.Columns.Count;

            String[] columns = new String[t];
            for (int i = 0; i < t; i++)
            {
                String x = gridView.Columns[i].Name;
                columns[i] = x;

                MessageIts.Mensagem(x);
            }
            return(columns);
        }
예제 #5
0
        /// <summary>
        /// Gera um arquivo com os dados da exceção.
        /// O diretório precisa existir.
        /// Caso o arquivo exista o conteúdo é adicionado ao final do arquivo.
        /// Lines são adcionados primeiro
        /// </summary>
        /// <param name="pathFile"></param>
        /// <param name="ex"></param>
        /// <param name="lines"></param>
        /// <returns></returns>
        public static bool AppendTextFileException(string pathFile, Exception ex, string[] lines = null)
        {
            try
            {
                DateTime dataAtual = DateTime.Now;

                //Verifico se o arquivo que desejo abrir existe e passo como parâmetro a respectiva variável
                if (File.Exists(pathFile))
                {
                    //escreve as linhas no arquivo
                    AppendTextFile(pathFile, lines);

                    //Crio um using, dentro dele instancio o StreamWriter, uso a classe File e o método
                    //AppendText para concatenar o texto, passando como parâmetro a variável pathFile
                    using (StreamWriter sw = File.AppendText(pathFile))
                    {
                        var inner = ex.InnerException == null
                            ? "Nenhuma exceção interna"
                            : ex.InnerException.Message + "";

                        //Uso o método Write para escrever o arquivo que será adicionado no arquivo texto
                        sw.Write(
                            "\nMensagem: " + ex.Message + "\n" +
                            "Classe: " + ex.GetType() + "\n" +
                            "Exceção interna: " + inner + "\n" +
                            "Pilha de erros: " + ex.StackTrace + "\n");
                    }
                    return(true);
                }
                else
                {
                    if (CreateFile(pathFile))
                    {
                        return(AppendTextFileException(pathFile, ex, lines));
                    }
                }
            }
            catch (IOException exio)
            {
                MessageIts.Mensagem(exio, "Falha ao gerar logs");
            }
            return(false);
        }