agregar columnas al datagrid en tiempo de ejecucion

Iniciado por SAGA-gl, 1 Julio 2015, 02:17 AM

0 Miembros y 1 Visitante están viendo este tema.

SAGA-gl

buenas noches verán tengo el sig. código en el cual traigo una consulta de la bd y pongo los resultados en el datagridview....lo q qiero hacer es agregar una o mas columnas d tipo textbox y checkbox y q tngan x filas según la cantidad de renglones q devuelva la consulta en tiempo de ejecución....como lo logro? grax d antemano
Código (csharp) [Seleccionar]
private void textBox1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {

                if (txtNumero.Text == "")
                {

                    DialogResult ds = MessageBox.Show("DEBE INGRESAR UN NRO DE ORDEN", "ATENCION", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    this.Text = ds.ToString();
                }
                else
                    if (txtNumero.Text != "")
                    {
                        conexion = new SqlConnection("Data Source=GONZALOCABRERA\\SQLEXPRESS;Initial Catalog=ProyectoSalud;Integrated Security=True");
                        conexion.Open();
                        SqlCommand consulta = new SqlCommand("select count (*) from DetalleOrdenCompra where codigoOrden=@codigo", conexion);
                        consulta.Parameters.AddWithValue("@codigo", Convert.ToInt32(txtNumero.Text));

                        int count = Convert.ToInt32(consulta.ExecuteScalar());


                        if (count > 0)
                        {

                            DialogResult result = MessageBox.Show(this, "DESEA REGISTRAR LOS DATOS?", "ORDEN DE COMPRA ENCONTRADA", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);
                           

                           
                            //MessageBox.Show(consulta2.ToString());
                            this.Text = result.ToString();

                            if (result == DialogResult.OK)
                            {

                                //CARGAR LOS DATAGRIDVIEW
                                SqlCommand consulta2 = new SqlCommand("SELECT dbo.DetalleOrdenCompra.codigoMedicamento,dbo.medicamentos1.nombre_medicamento, dbo.DetalleOrdenCompra.cantidad FROM dbo.DetalleOrdenCompra INNER JOIN dbo.medicamentos1 ON dbo.DetalleOrdenCompra.codigoMedicamento = dbo.medicamentos1.id_medicamento INNER JOIN dbo.DetalleMedicamento ON dbo.medicamentos1.id_medicamento = dbo.DetalleMedicamento.id_medicamento WHERE codigoOrden=@codigo ", conexion);
                                consulta2.Parameters.AddWithValue("@codigo", Convert.ToInt32(txtNumero.Text));
                                SqlDataAdapter da = new SqlDataAdapter(consulta2);
                                DataTable dt = new DataTable();
                                da.Fill(dt);
                                //dgv1.AutoGenerateColumns = false;
                                dgv1.DataSource = dt;

                                dgv1.Columns[0].HeaderText = "CODIGO";
                                dgv1.Columns[0].HeaderCell.Style.Alignment = DataGridViewContentAlignment.BottomCenter;
                                dgv1.Columns[0].DefaultCellStyle.Alignment = DataGridViewContentAlignment.BottomCenter;
                                dgv1.Columns[0].Width = 60;
                                dgv1.Columns[1].HeaderText = "MEDICAMENTO";
                                dgv1.Columns[1].HeaderCell.Style.Alignment = DataGridViewContentAlignment.BottomCenter;
                                dgv1.Columns[1].DefaultCellStyle.Alignment = DataGridViewContentAlignment.BottomCenter;
                                dgv1.Columns[1].Width = 211;
                                dgv1.Columns[2].HeaderText = "CANTIDAD";
                                dgv1.Columns[2].HeaderCell.Style.Alignment = DataGridViewContentAlignment.BottomCenter;
                                dgv1.Columns[2].DefaultCellStyle.Alignment = DataGridViewContentAlignment.BottomCenter;
                                dgv1.Columns[2].Width = 80;
                               
                               
                               
                                txtNumero.Enabled = false;
                            }
                            else if (result == DialogResult.Cancel)
                            {

                                txtNumero.Text = "";

                            }
                           
                            this.Text = result.ToString();
                           
                           
                        }
                        else
                        {

                            DialogResult ds = MessageBox.Show(this, "LA ORDEN INGRESADA NO SE ENCUENTRA REGISTRADA", "ATENCION", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                            this.Text = ds.ToString();
                           
                        }

                        conexion.Close();

                    }

SAGA-gl

lo pude solucionar....agrego a datagrid2 tantas filas como devuelva la consulta al datagrid1.....ahora como puedo hacer para que las filas del datagrid2 se puedan modificar? muchas gracias
Código (csharp) [Seleccionar]
private void txtNumero_KeyDown_1(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {

                if (txtNumero.Text == "")
                {

                    DialogResult ds = MessageBox.Show("DEBE INGRESAR UN NRO DE ORDEN", "ATENCION", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    this.Text = ds.ToString();
                }
                else
                    if (txtNumero.Text != "")
                    {
                        conexion = new SqlConnection("Data Source=GONZALOCABRERA\\SQLEXPRESS;Initial Catalog=ProyectoSalud;Integrated Security=True");
                        conexion.Open();
                        SqlCommand consulta = new SqlCommand("select count (*) from DetalleOrdenCompra where nro_orden=@nro", conexion);
                        consulta.Parameters.AddWithValue("@nro", Convert.ToInt32(txtNumero.Text));

                        int count = Convert.ToInt32(consulta.ExecuteScalar());


                        if (count > 0)
                        {

                            DialogResult result = MessageBox.Show(this, "DESEA REGISTRAR LOS DATOS?", "ORDEN DE COMPRA ENCONTRADA", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);


                            //MessageBox.Show(consulta2.ToString());
                            this.Text = result.ToString();

                            if (result == DialogResult.OK)
                            {

                                //CARGAR LOS DATAGRIDVIEW
                                SqlCommand consulta2 = new SqlCommand("SELECT dbo.medicamentos1.nombre_medicamento, dbo.medicamentos1.jerarquia, dbo.DetalleOrdenCompra.cantidad FROM dbo.DetalleOrdenCompra INNER JOIN dbo.medicamentos1 ON dbo.DetalleOrdenCompra.codigoMedicamento = dbo.medicamentos1.id_medicamento WHERE nro_orden=@nro ", conexion);
                                consulta2.Parameters.AddWithValue("@nro", Convert.ToInt32(txtNumero.Text));
                                SqlDataAdapter da = new SqlDataAdapter(consulta2);
                                DataTable dt = new DataTable();
                                da.Fill(dt);

                                dgv1.DataSource = dt;
                                int rows = dt.Rows.Count;

                                dgv1.Columns[0].HeaderText = "MEDICAMENTO";
                                dgv1.Columns[0].HeaderCell.Style.Alignment = DataGridViewContentAlignment.BottomCenter;
                                dgv1.Columns[0].DefaultCellStyle.Alignment = DataGridViewContentAlignment.BottomCenter;
                                dgv1.Columns[0].Width = 211;
                                dgv1.Columns[1].HeaderText = "JERARQUIA";
                                dgv1.Columns[1].HeaderCell.Style.Alignment = DataGridViewContentAlignment.BottomCenter;
                                dgv1.Columns[1].DefaultCellStyle.Alignment = DataGridViewContentAlignment.BottomCenter;
                                dgv1.Columns[1].Width = 180;
                                dgv1.Columns[2].HeaderText = "CANTIDAD";
                                dgv1.Columns[2].HeaderCell.Style.Alignment = DataGridViewContentAlignment.BottomCenter;
                                dgv1.Columns[2].DefaultCellStyle.Alignment = DataGridViewContentAlignment.BottomCenter;
                                dgv1.Columns[2].Width = 80;



                                for (int i = 1; i <= rows; i++)
                                {
                                    DataGridViewRow row = (DataGridViewRow)dgv2.RowTemplate.Clone();
                                    dgv2.Rows.Add(row);
                                   
                                   
                                }
                                txtNumero.Enabled = false;

                            }
                            else if (result == DialogResult.Cancel)
                            {

                                txtNumero.Text = "";

                            }

                            this.Text = result.ToString();


                        }
                        else
                        {

                            DialogResult ds = MessageBox.Show(this, "LA ORDEN INGRESADA NO SE ENCUENTRA REGISTRADA", "ATENCION", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                            this.Text = ds.ToString();

                        }

                        conexion.Close();
                    }