none
Seleccionar una fila de Gridview y Mostrar los datos Seleccionados en otro formulario

    Question

  • HOla como estan.

     

    Tengo un problemita Tengo un gridview ya con datos quiero seleccionar una fila y ya esta sea dandole doble click o presionando un boton que los datos seleccionados en el gridview pasen a otro formulario para ahi poder Modificarlos o eliminarlos ( Windows Form).

     

    He intentado algunos ejemplos de Leandro Tuttini pero al hacer uso del foreach me da un error que dice que no se puede usar que intente invocar al metodo o algo asi la verdad no me acuerdo.

     

    Desde ya agradeciendole su ayuda y colabroracion

     

     

    Tuesday, June 14, 2011 4:14 PM

All replies

  • hola

    para seleccionar un registro del grid imagino sabes usar el CellClick en este evento es que tomas la row

    y para pasarla al otro formulario lo puedes hacer por medio de constructor o con propiedades

     

    [WinForms] Pasaje de información formulario hijo

    veras alli como pasar informacion compleja entre formularios

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    Tuesday, June 14, 2011 4:22 PM
  • Hola,

    Si en el evento CellClick, puedes programar algo como:

    DataGridViewRow row = dataGridView1.CurrentRow;

    De esta forma obtienes todo el Row y lo puedes usar para setear una propiedad de este tipo en la clse del otro form.

    Otra opcion es esta:

    List<string> datos = new List<string>();
    for (int i = 0; i < dataGridView1.CurrentRow.Cells.Count; i++)
    {
       datos.Add(dataGridView1.CurrentRow.Cells[i].Value.ToString());

    Así obtienes una lista string con los datos contenidos en la grilla, luego la pasas a una propiedad de este tipo en el otro form

    Saludos.


    Nicolás Herrera
    Bogotá - Colombia
    BLOG - Leader Group BogotaDotNet
    "Daría todo lo que sé, por la mitad de lo que ignoro." Rene Descartes
    Tuesday, June 14, 2011 4:55 PM
  • Hola lo intente hacer con el ejemplo 2 del Link que me mandastes

    1- El evento cellclick no aprece creo que es porque estoy utilizando un gridview de developer xpress, bueno lo hize con el evento gridView1_DoubleClick.

     

    2-  Cuando hago uso de foreach me dice que no puede funcionar en un grupo de metodos ¿Intento invocar el grupo de metodos?

    Tuesday, June 14, 2011 5:00 PM
  • Hola

    Estas haciendo uso del control GridView?? aghh ese control es de UI.Web.. por ahy por eso pierdes bastante funcionalidad y potencia.

    Por que no haces uso de un DataGridView?  


    Nicolás Herrera
    Bogotá - Colombia
    BLOG - Leader Group BogotaDotNet
    "Daría todo lo que sé, por la mitad de lo que ignoro." Rene Descartes
    Tuesday, June 14, 2011 5:08 PM
  • Jeje je je creo que lo hare con un datagridview haber como me va.

     

    Pero ahun no entiendo el error del foreach :(

     

    Gracias les comento como me fue :)

    Tuesday, June 14, 2011 5:48 PM
  • hola

    para recorrer un datagriedview es simple

     

    foreach(DataGridViewRow row in DataGridView1.Rows){

          string valor = Convert.ToString(row.Cells["nombrecol"].Value);

         //y asi el resto

    }


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    Tuesday, June 14, 2011 5:55 PM
  • Gracias y ya probe con el foreach pero cada vez que quiero compilar me sale este error

    " no puede funcionar en un grupo de metodos ¿Intento invocar el grupo de metodos?"

    y pues no se a que se debe esto.

    Tuesday, June 14, 2011 6:04 PM
  • Hola, mm pero me temo que el error no tiene que ver con el foreach, para estar seguro, realice la prueba y me funciono :D

    Valida que realmente el error te lo tire en esa linea

    Saludos.


    Nicolás Herrera
    Bogotá - Colombia
    BLOG - Leader Group BogotaDotNet
    "Daría todo lo que sé, por la mitad de lo que ignoro." Rene Descartes
    Tuesday, June 14, 2011 6:06 PM
  • SI en esa linea es en donde Inicia el foreach

     

     List<DataRow> items = new List<DataRow>();

                foreach (DataGridViewRow row in gridView1.SelectRows)
                {
                    DataRowView dataItem = row.DataBoundItem as DataRowView;
                    items.Add(dataItem.Row);
                }

     

    Lo tengo asi o sera por que es de dev expres el control y no funciona?

    Tuesday, June 14, 2011 6:14 PM
  • es que no puede crear una lista de DataRow

    requieres que otro objeto cree la instancia como ser el DataTable.NewRow()

    podrias toimar la info de los campos que requieres para identificar la seleccion, como ser el id y llevar solo eso

               List<int> items = new List<int>();

                foreach (DataGridViewRow row in gridView1.SelectRows)
                {
                    DataRowView dataItem = row.DataBoundItem as DataRowView;
                    items.Add(Convert.ToInt32(dataItem["id"]));
                }

     

    con el id deberia serte util para poder identificar que entidad se selecciona

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    Tuesday, June 14, 2011 6:31 PM
  • Hola

    Pero hay lo que estas haciendo es crear una lista con todas las columnas del datagridviw (si estas trabajando con datagridview claro jaja :P), podrias hacer algo como lo siguiente:

    List<DataGridViewRow> lisDR = new List<DataGridViewRow>();
    foreach (DataGridViewRow mirow in dataGridView1.Rows)
    {
       lisDR.Add(mirow);
    }

    Así obtienes una coleccion con todas las filas del data.

    Saludos.

     


    Nicolás Herrera
    Bogotá - Colombia
    BLOG - Leader Group BogotaDotNet
    "Daría todo lo que sé, por la mitad de lo que ignoro." Rene Descartes
    Tuesday, June 14, 2011 6:38 PM
  • Si ya lo habia intentado y de nuevo lo intente ahorita y el mismo error me sale  :(

     

     

    Tuesday, June 14, 2011 6:40 PM
  • mmm Jorge pues eso si esta muy raro... pues estoy haciendo exactamente esto en mi compu y me anda. si errores ni nada...

    lo que se me hace aun mas raro es que el detalle del error sea:  "no puede funcionar en un grupo de metodos ¿Intento invocar el grupo de metodos?"

    y que lo marque en la linea del foreach.. :S ... intenta cerrar el proyecto, volverlo a abrir y regenerar las DLL's (Crtl + Shift + B) y ejecuta a ver si despega

    Saludos. 


    Nicolás Herrera
    Bogotá - Colombia
    BLOG - Leader Group BogotaDotNet
    "Daría todo lo que sé, por la mitad de lo que ignoro." Rene Descartes
    Tuesday, June 14, 2011 7:36 PM
  • Si la verdad si .

     

    Tengo otra pregunta el foreach para funcionar necesita que se incluya algo espesial, en que versiones de Visual Studio funciona.

     

     

    Tuesday, June 14, 2011 7:54 PM
  • pero con que lo has probado, con un dato simple o con el DataRow o el DataGridViewRow

     

    consejo, usa una lista de datos simple para pasar entre formulario, no uses datos complejos

    luego en el form tomas esos id y recuperas la info para mostrarlos

    o sino realiza un volcado de informacion, a una clase que tu definas

     

    public class Dato{

       public string id {get; set;}

       public string nombre {get; set;}

    }

    public class Form1{

         private void botn1_Click(){

               List<Dato> items = new List<Dato>();

                foreach (DataGridViewRow row in gridView1.SelectRows)
                {
                    DataRowView dataItem = row.DataBoundItem as DataRowView;
                    items.Add( new Dato(){ id=Convert.ToInt32(dataItem["id"]), nombre= Convert.ToString(dataItem["nombre"] } );
                }

         }

    }

    como veras creas un nuevo objeto complejo pero definido por ti, no usas nada de le UI para conservar el valor

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    Tuesday, June 14, 2011 7:55 PM
  • Ok he intentado con un dato simple, el DataRow y  el DataGridViewRow(este ultimo no me fue tan bien).

     

     

    Y gracias Leandro intentare hacerlo de esa forma haber como me sale.

    Tuesday, June 14, 2011 8:05 PM
  • Hola Jorge, y como te ha ido?? me ocupe con un asuntillo en la oficina y descuide este hilo, has logrado resolver tu duda, te has atascado en algun lado?

    Saludos.


    Nicolás Herrera
    Bogotá - Colombia
    BLOG - Leader Group BogotaDotNet
    "Daría todo lo que sé, por la mitad de lo que ignoro." Rene Descartes
    Tuesday, June 14, 2011 10:59 PM
  • HOla como estan Bueno intente a como dijo leandro arriba y lo mismo me sale el error del foreach.

     

    Pero bueno con intentar nada perdia y asi que me cree un nuevo formulario con un datagridview y no con el gridview que tenia y efectivamente funciono al 100% el foreach lo que deja una duda si trabajo con el control gridview de dev expres  el foreach no funciona o es una forma diferente de utilizarlo. je je je si la encuentro la posteo aqui mismo.

     

    Agradeciendole mucho su ayuda

     

     

    Wednesday, June 15, 2011 2:03 PM
  • cree un nuevo formulario con un datagridview y no con el gridview que tenia

    como es eso, o sea el gridview es un control de asp.net n ode winforms

    sera que antes usabas el DataGrid ? ese control en .net 2 fue reemplzado con mas funcionaldiad por el datagridview


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    Wednesday, June 15, 2011 2:10 PM
  • mm... Leandro, yo he oido en varios casos que agregar esa referencias de UI.WEB, y trabajan con GridView... el de WEB, la verdad YO NUNCA HE HECHO ESTO, no se que consecuencias acarree o hasta que punto sea beneficioso para el desarrollo y para el desarollador, por eso mas arriba dije que aconsejaba trabajar con DataGridView si el entorno era WinForms.

    Saludos


    Nicolás Herrera
    Bogotá - Colombia
    BLOG - Leader Group BogotaDotNet
    "Daría todo lo que sé, por la mitad de lo que ignoro." Rene Descartes
    Wednesday, June 15, 2011 2:13 PM
  • Bueno segun de la forma que medio nos habia explicado sobre los controles de windows form en Visual Studio 2005 nos dijieron que habia un programa de Nombre  Developer Expres el cual agregaba mayores y "mejores" controles para trabajar en windows form.

     

    Tomando como ejemplo desarrollaba segun yo una aplicacion usando estos controles de developre expres en windows form. Ahi es donde ese control que en windows form se llama DATAGRIDVIEW en developer expres se llama GRIDVIEW no se si eso sea correcto en cuanto a que DEV Expres da mayores funcionalidades a los controles, pero en fin me enseñaron de esa forma.

    Wednesday, June 15, 2011 2:19 PM
  • mm... pero estas trabajando con versiones 2005?? es decir no estoy seguro si en las versiones 2005 de visual express existia una division como las del 2008:

    Visual C# 2008 Expres, Visual Web developer Express 2008... etc etc ... así se empezo a trabajar desde 2008, no se si en las versiones del 2005 se halla hecho esto...

    Ahora estoy un tanto confundido jajaja... por que no usas Visual C# 2008 express?? es bvastante estable y anda muy bien, te recomendaria la 2010 pero exije mas maquina, así que si tienes un buen equipo, lanzate por este.


    Nicolás Herrera
    Bogotá - Colombia
    BLOG - Leader Group BogotaDotNet
    "Daría todo lo que sé, por la mitad de lo que ignoro." Rene Descartes
    Wednesday, June 15, 2011 2:27 PM
  • El programa no es propio de Visual estudio es de http://www.devexpress.com/ y la version que utilizo es developer express . net 7.2 y trabajo en la 2005 mas que todo porque es en la que estoy a prendiendo a caminar je je je ustedes saben que cuando no conocen un lugar y les muestran un camino para entrar y salir en los primeros dias siempre utilizan esa ruta y pues creo que es lo mismo que me pasa.
    Wednesday, June 15, 2011 2:34 PM
  • Ahhhh claro jajaja ya entiendo!!! jajaja, mmm... con razon esta confusion de nombres, :P ... mm pero lo que si no me va! es que no se permita lo del foreach para recorrer esa lista de objetos :S ...  


    Nicolás Herrera
    Bogotá - Colombia
    BLOG - Leader Group BogotaDotNet
    "Daría todo lo que sé, por la mitad de lo que ignoro." Rene Descartes
    Wednesday, June 15, 2011 2:40 PM
  • Je je je je si es raro eso pero a lo mejor es como se trata de otro control diferente me inmagino que la forma de recorrerla seria diferente por el tipo de objeto je je je a como dije arriba si la encuentro aqui mismo la posteo :) pero por los momentos tengo que hacer un poco de trabajo viendo los nuevos eventos y haber como me va je je je

    Gracias

    Wednesday, June 15, 2011 2:46 PM