none
data grid y checkbox RRS feed

  • Pregunta

  • tengo un datata grid  que lo llenos con unos datos de una base de datos,en ese datagrid  tengo una columna checkbox que la funcion es que cuando el usuario seleccione un una fila por mdedio del check y al darle en un boton se pase eso que seleccion a otro datagrid.

    todo eso lo esta haciendo,el problema  es que cuando  le doy en el boton los check me quedan seleccionados, lo que deseeo

     es q no cea asi, que al darle clik se pasen al otro datagrid y se deseleccionen los chekbox.

     

    lo estoy  haciendo de esta forma

     

     private void btnagregar_Click_1(object sender, EventArgs e)

            {

     

                List<DataGridViewRow> nuevo = new List<DataGridViewRow>();

                foreach (DataGridViewRow row in dgproductos.Rows)

                {

                    DataGridViewCheckBoxCell cellSelecion = row.Cells["Seleccion"] as DataGridViewCheckBoxCell;

                    if (Convert.ToBoolean(cellSelecion.Value))

                    {

                        nuevo.Add(row);

                    }

     

                }

                foreach (DataGridViewRow row in nuevo)

                {

     

                    dgseleccionados.Rows.Add(new object[] {

     

                                                      row.Cells["id_producto"].Value,

                                                        row.Cells["nombre"].Value,

                                                        row.Cells["tipo"].Value,

                                                        row.Cells["pre_venta"].Value});

     

     

     

     

     

                }

     

            }

     


    x4vi87
    miércoles, 20 de octubre de 2010 13:12

Respuestas

  • ahh te refieres a la grilla original la primer grilla, si es asi solo deberias demarcarlo luego de pasar

    DataGridViewCheckBoxCell cellSelecion = row.Cells["Seleccion"] as DataGridViewCheckBoxCell;

    if (Convert.ToBoolean(cellSelecion.Value))
    {
        nuevo.Add(row);
        cellSelecion.Value = false;
    }

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    • Marcado como respuesta x4vi87 miércoles, 20 de octubre de 2010 14:06
    miércoles, 20 de octubre de 2010 13:59

Todas las respuestas

  • hola

    revisa este articulo

    [DataGridView] – Pasar Registros entre Grillas

    alli explico justo esto que comentas, y no se quedan los check marcados

    compara el ejemplo con tu codigo para ver las diferencias

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    miércoles, 20 de octubre de 2010 13:18
  • Leandro mire tu ejemplo,me doy cuenta que el pasa los registros de un datagrid otro ,pero los que se ahn seleccionado se eliminan del datagrid  la darle click  y pasan al otro datagrid . 
    x4vi87
    miércoles, 20 de octubre de 2010 13:31
  • hola

    si porque asi esta armado el articulo

    pero no es una regla que sea asi, veras que son dos operaciones asl que se realizan, podrias pasar a la ota grilla, sin eliminar de la primera

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    miércoles, 20 de octubre de 2010 13:32
  • Pues si es eso lo que estoy haciendo,pasar sin eliminar la otra,pero no puedo hacer que al pasar los datos al segundo datagrid, los ckeckbox de el primero no queden seleccionados

    espero me ayudes


    x4vi87
    miércoles, 20 de octubre de 2010 13:37
  • pero al pasarlos como lo estas insertando en el nueva grilla usando el Rows.Add

    esto no puede marcar el check del otro grid si es que ahs definido la columan en timepo de diseño

    poruqe no pruebas

    dgseleccionados.Rows.Add(new object[] { false ,
                                          row.Cells["id_producto"].Value,
                                            row.Cells["nombre"].Value,
                                            row.Cells["tipo"].Value,
                                            row.Cells["pre_venta"].Value});

    ese false corresponde al check de la primer columna

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    miércoles, 20 de octubre de 2010 13:41
  • cuando paso los datos al datagrid me pasan y no estan seleccionados.

     

    Los que me quedan seleccionados son los checkbox del datagrid que tomo los datos.

     

     

    Tomo los datos de dgproductos y los paso a dgseleccionados.

     

     

     private void btnagregar_Click_1(object sender, EventArgs e)

            {

     

                List<DataGridViewRow> nuevo = new List<DataGridViewRow>();

                foreach (DataGridViewRow row in dgproductos.Rows)

     

     

                {

                    DataGridViewCheckBoxCell cellSelecion = row.Cells["Seleccion"] as DataGridViewCheckBoxCell;

                    if (Convert.ToBoolean(cellSelecion.Value))

                    {

                        nuevo.Add(row);

                    }

     

                }

                foreach (DataGridViewRow row in nuevo)

                {

     

                    dgseleccionados.Rows.Add(new object[] {false,

     

                                                      row.Cells["id_producto"].Value,

                                                        row.Cells["nombre"].Value,

                                                        row.Cells["tipo"].Value,

                                                        row.Cells["pre_venta"].Value});

     

     

     

     

     

                }

     

            }

     

     


    x4vi87
    miércoles, 20 de octubre de 2010 13:50
  • ahh te refieres a la grilla original la primer grilla, si es asi solo deberias demarcarlo luego de pasar

    DataGridViewCheckBoxCell cellSelecion = row.Cells["Seleccion"] as DataGridViewCheckBoxCell;

    if (Convert.ToBoolean(cellSelecion.Value))
    {
        nuevo.Add(row);
        cellSelecion.Value = false;
    }

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    • Marcado como respuesta x4vi87 miércoles, 20 de octubre de 2010 14:06
    miércoles, 20 de octubre de 2010 13:59