none
Entrada de dados no DataGridview RRS feed

  • Pergunta

  • Boa tarde pessoal.

    Estou iniciando em programação e escolhi C# como linguagem. Como trabalho com manutenção de veículos, estou desenvolvendo uma aplicação para controle de manutenção de frota por abertura de OS.

    Achei interessante os serviços serem lançados via DataGrid pelo fato de não ter um numero limitado de serviços a serem lançados por equipamento (devido a cada serviço fazer parte de uma estatística). O problema é que não encontrei nada a resepeito de como quero desenvolve-lo que é o seguinte:

    Ao carregar o form com o DataGrid para lançamento, este deverá carregar uma linha em branco para ser inserido o primeiro serviço que terá os campos de tipo de serviço e descrição dos serviços (carregados por combo), data e hora de abertura e por fim data e hora de fechamento da OS. Ao inserir os valores de fechamento da OS, confirmando com Enter, queria que inserisse uma nova linha para inserção de outro serviço e assim por diante.

    Tentei com o exemplo abaixo más não consegui fazer a inserção de uma nova linha para continuar os lançamentos.

    Poderiam me ajudar?

                

    private void Form1_Load(object sender, EventArgs e)
            {

                LoadGrid();

                dataGridView1.ColumnCount = 4;

                dataGridView1.Columns[0].Name = "Descrição";
                dataGridView1.Columns[1].Name = "Qtd";
                dataGridView1.Columns[2].Name = "Valor";
       dataGridView1.Columns[3].Name = "Total";
            }

            private void LoadGrid()
            {
                dataGridView1.Rows.Clear();
                dataGridView1.ColumnCount = 4;
                SqlConnection conn = new SqlConnection();
                conn.ConnectionString = Properties.Settings.Default.Vendas;

                var sql = "SELECT * FROM Itens";
                var cmd = new SqlCommand(sql, conn);
                conn.Open();

                var leitor = cmd.ExecuteReader();
               

    while (leitor.Read())
                {
                    dataGridView1.Rows.Add(leitor[0].ToString(),
                        leitor[1].ToString(),
                        leitor[2].ToString(),
                        leitor[3].ToString());
                }
                conn.Close();
            }

            bool notlastColumn = true;

            private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
            {
                if (dataGridView1.ColumnCount - 1 == e.ColumnIndex)  //if last column
                {
                    KeyEventArgs forKeyDown = new KeyEventArgs(Keys.Enter);
                    notlastColumn = false;
                    dataGridView1_KeyDown(dataGridView1, forKeyDown);

                }
                else
                {
                    SendKeys.Send("{up}");
                    SendKeys.Send("{right}");

                }

            }

            private void dataGridView1_KeyDown(object sender, KeyEventArgs e)
            {
                if (e.KeyCode == Keys.Enter)
                {
                    e.SuppressKeyPress = true;
                    int iColumn = dataGridView1.CurrentCell.ColumnIndex;
                    int iRow = dataGridView1.CurrentCell.RowIndex;
                    if (iColumn == dataGridView1.Columns.Count - 1)
                        dataGridView1.CurrentCell = dataGridView1[0, iRow + 1];

                    else
                        dataGridView1.CurrentCell = dataGridView1[iColumn + 1, iRow];

                }
            }
        }

    Espero que alguém possa me ajudar.

    E bom trabalho para todos.

    quinta-feira, 28 de julho de 2016 16:05

Todas as Respostas