Usuário com melhor resposta
MessageBox em Datagrid c#

Pergunta
-
bem tenho o seguinte datagrid
como é q faço pra botá um MessageBox tipo assim
if(coluna[2] for == 0,00 no periodo de 02/08/2014 a 31/08/2014)
{
MessageBox.Show("Todas a coluna [2] é = 0,00 menos a primeira row ");
}
é possível?
- Editado Rhael_Andrade terça-feira, 5 de agosto de 2014 19:19
Respostas
-
Bom dia Rhael, fiz um exemplo, verifica se te atende, abraço!!!
public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { dataGridView1.DataSource = new List<Exemplo> { new Exemplo { Id = 1, Periodo = new DateTime(2014,08,01), Indice = 0.00M }, new Exemplo { Id = 2, Periodo = new DateTime(2014,08,02), Indice = 0.10M }, new Exemplo { Id = 3, Periodo = new DateTime(2014,08,05), Indice = 0.40M } }; List<int> linhas = new List<int>(); for (int i = 0; i < dataGridView1.RowCount; i++) { if (Decimal.Parse(dataGridView1.Rows[i].Cells[2].Value.ToString()) > 0.00M) { linhas.Add(i); } } if (linhas.Count > 0) { string mensagem = "As seguintes linhas não são 0.00:\n "; for (int i = 0; i < linhas.Count; i++) { mensagem += String.Format("Linha: {0} \n",linhas[i]); } MessageBox.Show(mensagem, "Atenção"); } } } class Exemplo { public int Id { get; set; } public DateTime Periodo { get; set; } public decimal Indice { get; set; } }
Diego de O. Neves |Analista Desenvolvedor .NET
Microsoft MCP | ITIL® V3 Foundation- Sugerido como Resposta Diego de Oliveira Neves quarta-feira, 6 de agosto de 2014 02:14
- Marcado como Resposta Ricardo Barbosa CortesModerator quarta-feira, 6 de agosto de 2014 19:22
-
Rhael, pelo seu cenário, a única forma é percorrer linhas mesmo, seja pelo DataTable ou pelo grid direto...uma outra forma era fazer um filtro no DataTable, mas no fim daria no mesmo porque você precisa dizer ao usuário quais as linhas que não são 0.00 pelo o que entendi...
Diego de O. Neves |Analista Desenvolvedor .NET
Microsoft MCP | ITIL® V3 Foundation- Sugerido como Resposta Ricardo Barbosa CortesModerator quarta-feira, 6 de agosto de 2014 19:23
- Marcado como Resposta Ricardo Barbosa CortesModerator quarta-feira, 6 de agosto de 2014 19:23
Todas as Respostas
-
-
Bom dia Rhael, fiz um exemplo, verifica se te atende, abraço!!!
public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { dataGridView1.DataSource = new List<Exemplo> { new Exemplo { Id = 1, Periodo = new DateTime(2014,08,01), Indice = 0.00M }, new Exemplo { Id = 2, Periodo = new DateTime(2014,08,02), Indice = 0.10M }, new Exemplo { Id = 3, Periodo = new DateTime(2014,08,05), Indice = 0.40M } }; List<int> linhas = new List<int>(); for (int i = 0; i < dataGridView1.RowCount; i++) { if (Decimal.Parse(dataGridView1.Rows[i].Cells[2].Value.ToString()) > 0.00M) { linhas.Add(i); } } if (linhas.Count > 0) { string mensagem = "As seguintes linhas não são 0.00:\n "; for (int i = 0; i < linhas.Count; i++) { mensagem += String.Format("Linha: {0} \n",linhas[i]); } MessageBox.Show(mensagem, "Atenção"); } } } class Exemplo { public int Id { get; set; } public DateTime Periodo { get; set; } public decimal Indice { get; set; } }
Diego de O. Neves |Analista Desenvolvedor .NET
Microsoft MCP | ITIL® V3 Foundation- Sugerido como Resposta Diego de Oliveira Neves quarta-feira, 6 de agosto de 2014 02:14
- Marcado como Resposta Ricardo Barbosa CortesModerator quarta-feira, 6 de agosto de 2014 19:22
-
so que da seguinte maneira q vc postou Diego é percorre toda a linha do datagrid né isso? não é possível por período não?
- Editado Rhael_Andrade quarta-feira, 6 de agosto de 2014 12:27
-
-
eu carrego ele da seguinte forma
dataGridView2.DataSource = Conexao.Conexao.RetornaDataSet("SELECT * FROM tabFux WHERE datadia >= '" + primeiroDia + "' AND datadia<= '" + ultDia + "'").Tables[0]; List<Ordenar> ordenarDados = new List<Ordenar>(); Dictionary<string, float> entradas = new Dictionary<string, float>(); Dictionary<string, float> saidas = new Dictionary<string, float>(); foreach (DataGridViewRow item in dataGridView2.Rows) { if (item.Cells[7].Value == DBNull.Value) { item.Cells[7].Value = "0,00"; } if (item.Cells[4].Value == DBNull.Value) { item.Cells[4].Value = "0,00"; } if (item.Cells[3].Value == DBNull.Value) { item.Cells[3].Value = "0,00"; } if (item.Cells[6].Value == DBNull.Value) { item.Cells[6].Value = "0,00"; } if (item.Cells[2].Value == DBNull.Value) { item.Cells[2].Value = "01/01/1900"; } //adiciono na colecao ordenarDados.Add(ObterRegistro(item.Cells[2], item.Cells[0], item.Cells[1], item.Cells[6], item.Cells[4], item.Cells[3], item.Cells[7])); string mes = item.Cells[1].Value.ToString(); float valorEntrada = float.Parse(item.Cells[4].Value.ToString()); if (entradas.ContainsKey(mes)) entradas[mes] += valorEntrada; else entradas.Add(mes, valorEntrada); float valorSaida = float.Parse(item.Cells[3].Value.ToString()); if (saidas.ContainsKey(mes)) saidas[mes] += valorSaida; else saidas.Add(mes, valorSaida); } foreach (var item in ordenarDados.OrderBy(i => i.Data1)) { dataGridView3.Rows.Add(item.item2, item.Data1, item.item3, item.item4, item.item5, item.item6, item.item1); } for (int i = 0; i < entradas.Count; i++) { KeyValuePair<string, float> entrada = entradas.ElementAt(i); KeyValuePair<string, float> saida = saidas.ElementAt(i); // if (entrada.Value <= 0) continue; int ultimoRegistro = ordenarDados.IndexOf(ordenarDados.Where(o => o.item2.Trim().Equals(entrada.Key)).Last()) + 1; dataGridView3.Rows.Insert(ultimoRegistro, string.Empty, string.Empty, string.Empty, entrada.Value.ToString("c2"), saida.Value.ToString("c2"), string.Empty, string.Empty); DataGridViewRow row = dataGridView3.Rows[ultimoRegistro]; ordenarDados.Insert(ultimoRegistro, ObterRegistro(row.Cells[1], row.Cells[6], row.Cells[0], row.Cells[2], row.Cells[3], row.Cells[4], row.Cells[5])); }
-
Rhael, pelo seu cenário, a única forma é percorrer linhas mesmo, seja pelo DataTable ou pelo grid direto...uma outra forma era fazer um filtro no DataTable, mas no fim daria no mesmo porque você precisa dizer ao usuário quais as linhas que não são 0.00 pelo o que entendi...
Diego de O. Neves |Analista Desenvolvedor .NET
Microsoft MCP | ITIL® V3 Foundation- Sugerido como Resposta Ricardo Barbosa CortesModerator quarta-feira, 6 de agosto de 2014 19:23
- Marcado como Resposta Ricardo Barbosa CortesModerator quarta-feira, 6 de agosto de 2014 19:23
-