private void button7_Click(object sender, EventArgs e) { List <Apontamentos> lista = new List <Apontamentos>(); try { Connection.obterConexao(); var biz = new br.com.iasdjf.biz.ApontamentosBIZ(); //deleta todos os apontamentos biz.DeleteAll(); //lista = dataGridView1.DataSource; lista = biz.GetAll(); } catch (Exception ex) { MessageBox.Show("Erro ao inserir apontamentos. Detalhes:" + ex.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); } finally { Connection.fecharConexao(); } }
private void OnLoad(object sender, EventArgs e) { List <Apontamentos> lista = new List <Apontamentos>(); try { Connection.obterConexao(); var biz = new br.com.iasdjf.biz.ApontamentosBIZ(); lista = biz.GetAll(); //agrupo por datas var grupoSabados = lista.GroupBy(c => c.Saturday); //cria uma tabela dinamica var Dtb_Apontamentos = new DataTable(); //Acrescenta coluna ID Pessoa para posteriormente inserir no DAO Apontamentos Dtb_Apontamentos.Columns.Add("Id_Pessoa"); var listaIdNomesDistintos = (from p in lista select p.Id_Pessoa).ToList().Distinct(); foreach (var item in listaIdNomesDistintos) { var row = Dtb_Apontamentos.NewRow(); row["Id_Pessoa"] = item; Dtb_Apontamentos.Rows.Add(row); Dtb_Apontamentos.AcceptChanges(); } //Acrescenta coluna Nome Pessoa Dtb_Apontamentos.Columns.Add("Nome"); var listaNomesDistintos = (from p in lista select p.Nome).ToList().Distinct(); int rows = 0; foreach (DataRow row in Dtb_Apontamentos.Rows) { row["Nome"] = listaNomesDistintos.ElementAtOrDefault(rows); Dtb_Apontamentos.AcceptChanges(); rows++; } int count = 0; //insere as n datas como colunas no datatable foreach (var itemColuna in grupoSabados) { //Adiciona coluna de Sabado concatenando com o Id do Sabado Dtb_Apontamentos.Columns.Add(itemColuna.Key.ToString("dd/MM") + "_" + itemColuna.ElementAtOrDefault(count).Id_Saturday.ToString()); foreach (DataRow row in Dtb_Apontamentos.Rows) { var presence = itemColuna.Where(c => c.Nome == row["Nome"].ToString()).FirstOrDefault(); if (presence != null) { row[itemColuna.Key.ToString("dd/MM") + "_" + itemColuna.ElementAtOrDefault(count).Id_Saturday.ToString()] = presence.Presence; } else { row[itemColuna.Key.ToString("dd/MM") + "_" + itemColuna.ElementAtOrDefault(count).Id_Saturday.ToString()] = ""; } } count++; } //Faz o bind para o datagrid dataGridView1.DataSource = Dtb_Apontamentos; //Oculta a 1ª coluna this.dataGridView1.Columns["Id_Pessoa"].Visible = false; //Altera o texto de exibicao das colunas retirando o codigo for (int i = 2; i < dataGridView1.Columns.Count; i++) { dataGridView1.Columns[i].HeaderText = dataGridView1.Columns[i].Name.Split('_')[0]; } //Altera cores celulas foreach (DataGridViewRow row in dataGridView1.Rows) { //Trava a 1ª coluna para edicao foreach (DataGridViewColumn column in dataGridView1.Columns) { if (column.Index == 1) { column.ReadOnly = true; } //Desabilita a ordenacao das colunas column.SortMode = DataGridViewColumnSortMode.NotSortable; DataGridViewCell cell = dataGridView1.Rows[row.Index].Cells[column.Index]; if (cell.Value != null) { if (cell.Value.Equals("P")) { cell.Style.BackColor = Color.Cyan; } else if (cell.Value.Equals("F")) { cell.Style.BackColor = Color.Pink; } } } } //Redimensiona as colunas dataGridView1.AutoResizeColumns(); } catch (Exception ex) { MessageBox.Show("Erro ao buscar apontamentos. Detalhes:" + ex.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); } finally { Connection.fecharConexao(); } }