/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }