none
Ayuda con gridview en C# RRS feed

  • Pregunta

  • Junto con saludarlos necesito ayuda para pasar registros de una gridview principal a una secundaria pero a diferencia de que la gridview principal se maneja con id asi q cada vez q seleccione un registro tiene que cargar los datos asociados con ese id (Si selecciono dos registros de la gridview principal tiene que agregar tanto del primer registro como los datos del segundo id en una gridview secundaria

    Seleccionar ID Filtros
    1 COMUNIDAD BRIT
    2 COMUNIDAD POLÍTICA
    3 REGULACIÓN
    4 UNIVERSIDADES / COLEGIOS
    5 COMUNIDAD CULTURAL

    La gridview tiene un boton al final que es filtar ahi tomo los id que seleccionaron para cargar la griview secundaria

    De esta forma esta la gridview principal si necesito seleccionar ID (1, 2) en la gridview secundaria me tendria que cargar ambos id con registros diferentes si me pueden ayudar u orientarme con respecto a esto.

    Saludos

    lunes, 20 de julio de 2015 13:04

Respuestas

  • hola

    se entiende lo que planteas, lo que pasa es que el metodo LlenarGrSecNvl1() le pasas de a un id a la vez, un id = entidad que agregas a la lista

    por eso iteras por las rows marcadas en el primer grid

    - tomas un id marcado del primer grid

    - recuperas la entidad que pertenerce a ese id

    - lo agregas a la lista

    - vuelves a empezar

    - cuando el foreach termina asignas la lista al segundo grid

    esto es lo que entiendo quieres lograr, por eso es que marco que el metodo LlenarGrSecNvl1() recibe un id por parametro y devuelve una entidad simple como respuesta

    -----

    ahora si lo que buscas es llamar al metodos LlenarGrSecNvl1() pasandole una lista de id todos de una vez y que esto retorne una lista de entidades que pertenecen esos id que les pasaste, el camino es muy distinto

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta LatinWater martes, 21 de julio de 2015 14:53
    martes, 21 de julio de 2015 6:48
  • Gracias leandro me aclaraste las dudas que me ivan surgiendo aca dejo el fuente resulto para quien lo necesite.

    Nivel1.aspx.cs

    protected void BtnFiltar_Click(object sender, EventArgs e)
            {
                List<Entidad> listValor = new List<Entidad>();
               //List<Entidad> list = Session["list"] as List<Entidad>;
                List<InstGrSecNvl1> list = new List<InstGrSecNvl1>();
                foreach (GridViewRow row in GrPrincipal.Rows)
                {
                    CheckBox check = row.FindControl("chkRow") as CheckBox;
                    if (check.Checked)
                    {
                        int Nvl = Convert.ToInt32(GrPrincipal.DataKeys[row.RowIndex].Value);
                        list.AddRange( LlenarGrid.LlenarGrSecNvl1(Nvl));
                    }
                }
                GrSecundaria.DataSource = list;
                GrSecundaria.DataBind();
                //Session["list"] = listValor;
            }


    LlenarGrid.cs

      public static List<InstGrSecNvl1> LlenarGrSecNvl1(int nvl)
            {
                List<InstGrSecNvl1> lista = new List<InstGrSecNvl1>();
                using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["Connection"].ToString()))
                {
                    conn.Open();
                    string query = "[sp_corporativo_BDContacto_FiltroNivel1_GrSec]";
    
                    SqlCommand cmd = new SqlCommand(query, conn);
                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.Parameters.AddWithValue("@IdNivel", nvl);
    
                    SqlDataReader reader = cmd.ExecuteReader();
                    InstGrSecNvl1 items = null;
                    while (reader.Read())
                    {
                        items = new InstGrSecNvl1();
    
                        items.Ficha = Convert.ToInt32(reader["Ficha"]);
                        items.Contacto = Convert.ToString(reader["Contacto"]);
                        items.Mail = Convert.ToString(reader["Mail"]);
                        items.Nivel1 = Convert.ToString(reader["Nivel1"]);
                        items.Nivel2 = Convert.ToString(reader["Nivel2"]);
                        items.Cargo = Convert.ToString(reader["Cargo"]);
                        lista.Add(items);
                        //lista.Add(ConvertirListFiltros(reader, true));
                    }
                }
                return lista;
            }
    items = new InstGrSecNvl1

    InstGrid.cs

    using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace BaseCorp.Clases {

    public class InstGrSecNvl1 { public int Ficha { get; set; } public string Contacto { get; set; } public string Mail { get; set; } public string Nivel1 { get; set; } public string Nivel2 { get; set; } public string Cargo { get; set; } } }

    Saludos

    LatinWater!


    • Marcado como respuesta LatinWater martes, 21 de julio de 2015 14:56
    • Editado LatinWater martes, 21 de julio de 2015 14:57
    martes, 21 de julio de 2015 14:56

Todas las respuestas

  • Construi algo de codigo pero me quede frenado en esta parte resulta que en button de filtrado

         protected void BtnFiltar_Click(object sender, EventArgs e)
            {
                foreach (GridViewRow row in GrPrincipal.Rows)
                {
                    CheckBox check = row.FindControl("chkRow") as CheckBox;
                    if (check.Checked)
                    {
                        //Aca ira la consulta por cada check seleccionado
                        
                        string Nvl = row.Cells[1].Text;
                    }
                }
            }

    Se supone que aca genero la consulta para que tome los diferente idNivel pero como voy guardo cada vez q se ejecute la seleccion

    Saludos

    LatinWater!


    lunes, 20 de julio de 2015 15:40
  • hola

    >>pasar registros de una gridview principal a una secundaria

    por secundaria te refieres a un segundo gridview ?

    [ASP.NET] – Pasar valores entre dos GridView

    en la implementacion veras que vuelca al segundo grid las rows marcadas

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 20 de julio de 2015 15:42
  • Gracias por responder leandro resulta que las gridview estan en la misma pagina una se carga con un procedimiento almacenado y tiene para seleccionar filas para cargar en la segunda gridview pero la gridview principal tiene un id cuando selecciono en la gridview principal esta tiene que cargar dichos registros haciendo otro procedimiento almacenado para  que se ejecute este sentencia

    Procedimiento Gridiview principal

    SELECT     
    			T1.ID_NIVEL1, 
    			T1.NOM_NIVEL1
    FROM         
    			CONTACTOS_NIVEL1 AS T1 
    
    Resultados

    1    COMUNIDAD BRIT
    2    COMUNIDAD POLÍTICA
    3    REGULACIÓN
    4    UNIVERSIDADES / COLEGIOS

    Si selecciono el id 1 y 4 me carga diferentes registros en griview secundario pero no se como mantener la gridview secundarias si se cargan diferentes id


    CREATE PROCEDURE [dbo].[sp_corporativo_BDContacto_FiltroNivel1_GrSec]                                
    	(
    		@IdNivel AS VARCHAR(20)
    	)
    AS
    
    SELECT     
    			T1.ID_FICHA AS Ficha,  
    			T1.NOMBRE AS Contacto
    FROM         
    			CONTACTOS_FICHAS AS T1 
    WHERE 
    			T1.ID_NIVEL1 = @IdNivel

    Saludos

    LatinWater!

    lunes, 20 de julio de 2015 15:55
  • hola

    >>Si selecciono el id 1 y 4 me carga diferentes registros en griview secundario pero no se como mantener la gridview secundarias si se cargan diferentes id

    podrias mantener las entidades en una lista auxiliar que conservas en Session

    entonces los check marcados los vas agregando a esa lista en Session y al final asignas la lista al DataSource del segundo grid

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 20 de julio de 2015 16:01
  • Tengo desarrollado esto hasta al momento.

      protected void BtnFiltar_Click(object sender, EventArgs e)
            {
                foreach (GridViewRow row in GrPrincipal.Rows)
                {
                    CheckBox check = row.FindControl("chkRow") as CheckBox;
                    if (check.Checked)
                    {
                        //Aca ira la consulta por cada check seleccionado
                        
                        string Nvl = row.Cells[1].Text;
                    }
                }
            }

    como puedo generar para lo que me comentaste arriba

    podrias mantener las entidades en una lista auxiliar que conservas en Session?

    LatinWater!

    lunes, 20 de julio de 2015 16:03
  • hola

    en el primer grid no defines un DataKeyNames ? para tomar el id de la entidad que se esta marcando

    protected void BtnFiltar_Click(object sender, EventArgs e)
    {
    	List<Entidad> list = Session["list"] as List<Entidad>();
    	
    	foreach (GridViewRow row in GrPrincipal.Rows)
    	{
    		CheckBox check = row.FindControl("chkRow") as CheckBox;
    		if (check.Checked)
    		{
    			int id = GrPrincipal.DataKeys[row.RowIndex].ToString();
    			
    			Entidad ent = negocio.GetById(id);
    			
    			list.Add(ent);
    		}
    	}
    	
    	GridView2.DataSource = list;
    	GridView2.DataBind();
    	
    	Session["list"] = list;
    }

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 20 de julio de 2015 16:17
  • Gracias leandro por la ayuda brindada

    Necesito ayuda en esta parte

     protected void BtnFiltar_Click(object sender, EventArgs e)
            {
                List<InstGrSecNvl1> list = Session["list"] as List<InstGrSecNvl1>;
    
                foreach (GridViewRow row in GrPrincipal.Rows)
                {
                    CheckBox check = row.FindControl("chkRow") as CheckBox;
                    if (check.Checked)
                    {
                        //Aca ira la consulta por cada check seleccionado
                       //int id = GrPrincipal.DataKeys[row.RowIndex].ToString();
                        
                        string Nvl = row.Cells[1].Text;
                        InstGrSecNvl1 ent = LlenarGrid.LlenarGrSecNvl1(Nvl);
                        
                        list.Add(ent);
                    }
                }
                GrSecundaria.DataSource = list;
                GrSecundaria.DataBind();
    
                Session["list"] = list;
            }
     

    LlenadarGrid.cs

     public static InstGrSecNvl1 LlenarGrSecNvl1(string Nvl)
            {
                InstGrSecNvl1 Filtros = null;
                using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["Connection"].ToString()))
                {
                    conn.Open();
                    string query = "[sp_corporativo_BDContacto_FiltroNivel1_GrSec]";
    
                    SqlCommand cmd = new SqlCommand(query, conn);
                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.Parameters.AddWithValue("@IdNivel", Nvl);
    
                    SqlDataReader reader = cmd.ExecuteReader();
                    while (reader.Read())
                    {
                        Filtros = ConvertirListFiltros(reader, true);
                    }
                }
                return Filtros;
            }
            private static InstGrSecNvl1 ConvertirListFiltros(IDataReader reader, bool cargarRelaciones)
            {
                InstGrSecNvl1 Filtros = new InstGrSecNvl1();
    
                Filtros.Ficha = Convert.ToString(reader["Ficha"]);
                Filtros.Contacto = Convert.ToString(reader["Contacto"]);
    
                return Filtros;
            } 

    Aca tengo un problema me trae el ultimo registro

     list.Add(ent);

    me sale siguiente error("El codigo de usuario no controlo NullReferenceException")

    Saludos


    • Editado LatinWater lunes, 20 de julio de 2015 17:43
    lunes, 20 de julio de 2015 17:41
  • hola

    veo muy raro estas dos lineas

    string Nvl = row.Cells[1].Text;
    InstGrSecNvl1 ent = LlenarGrid.LlenarGrSecNvl1(Nvl);

    que dato tienes el la priemr columnas del grid ? no es que la priemr columnas son checkbox ?

    podrias poner un breakpoint en el codigo y ver que dato obtienes

    ademas como puede ser que un LlenarGrSecNvl1() retorne una sola entidad ?

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 20 de julio de 2015 18:02
  • que dato tienes el la priemr columnas del grid ? no es que la priemr columnas son checkbox ?

    es el id de seleccion, no te puedo adjuntar imagenes para que veas el gridview principal no se pq.

    Resultados

    ID Nombre

    1    COMUNIDAD BRIT
    2    COMUNIDAD POLÍTICA
    3    REGULACIÓN
    4    UNIVERSIDADES / COLEGIOS

    podrias poner un breakpoint en el codigo y ver que dato obtienes

    y efectivamente me toma el registro seleccionado.

    InstGrid.cs

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    
    namespace BaseCorpContactos.Clases
    {
    
        public class InstGrSecNvl1
        { 
            public string Ficha { get; set; }
            public string Contacto { get; set; }
        
        }
    }

    Saludos

    LatinWater!

    lunes, 20 de julio de 2015 18:08
  • consulta

    - en que evento cargas los datos del priemr grid? es en el Page_Load, si es asi lo defines dentro de un if(!IsPostBack)

    - en que evento inicializas el Session["list"] ? porque si lo usas directo en BtnFiltar_Click y el session esta vacio tendria un error

    salvo que uses

    List<InstGrSecNvl1> list = Session["list"] as List<InstGrSecNvl1>;

    if(list == null){

    list = new List<InstGrSecNvl1>();

    }

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 20 de julio de 2015 18:34
  • Hola Leandro ordene el codigo fuente mira resulta que ahora me esta arrojando el siguiente error

    Nivel1.aspx.cs

     protected void BtnFiltar_Click(object sender, EventArgs e)
            {
    	        List<Entidad> list = Session["list"] as List<Entidad>;
    	
    	        foreach (GridViewRow row in GrPrincipal.Rows)
    	        {
    		        CheckBox check = row.FindControl("chkRow") as CheckBox;
    		        if (check.Checked)
    		        {
                        int Nvl = Convert.ToInt32(GrPrincipal.DataKeys[row.RowIndex].Value);
    
                        Entidad ent = LlenarGrid.LlenarGrSecNvl1(Nvl);
    			
    			        list.Add(ent);
    		        }
    	        }
    	
    	        GrSecundaria.DataSource = list;
    	        GrSecundaria.DataBind();
    	
    	        Session["list"] = list;
            }

     List<Entidad>

    InstGrid.cs

     public class Entidad
        {
            public int Ficha { get; set; }
            public string Contacto { get; set; }
        }

    Cuando se ejecuta esa linea de codigo

    Entidad ent = LlenarGrid.LlenarGrSecNvl1(Nvl);

    se va ha esta parte LlenarGrid.cs

        public static List<InstGrSecNvl1> LlenarGrSecNvl1(int Nvl)
            {
                List<InstGrSecNvl1> lista = new List<InstGrSecNvl1>();
                using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["Connection"].ToString()))
                {
                    conn.Open();
                    string query = "[sp_corporativo_BDContacto_FiltroNivel1_GrSec]";
    
                    SqlCommand cmd = new SqlCommand(query, conn);
                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.Parameters.AddWithValue("@IdNivel", Nvl);
    
                    SqlDataReader reader = cmd.ExecuteReader();
                    while (reader.Read())
                    {
                        lista.Add(ConvertirListFiltros(reader, true));
                    }
                }
                return lista;
            }
            private static InstGrSecNvl1 ConvertirListFiltros(IDataReader reader, bool cargarRelaciones)
            {
                InstGrSecNvl1 lista = new InstGrSecNvl1();
    
                lista.Ficha = Convert.ToInt32(reader["Ficha"]);
                lista.Contacto = Convert.ToString(reader["Contacto"]);
    
                return lista;
            } 

    Error que se genera... una vez que vuelve nivel1.aspx.cs

    Especificamente a esa parte

    Entidad ent = LlenarGrid.LlenarGrSecNvl1(Nvl);

    No se puede convertir implícitamente el tipo 'System.Collections.Generic.List<BaseCorpContactos.Clases.InstGrSecNvl1>' en 'BaseCorpContactos.Clases.InstGrSecNvl1'  

    Saludos

    LatinWater!



    • Editado LatinWater lunes, 20 de julio de 2015 18:39
    lunes, 20 de julio de 2015 18:37
  • el problema esta en esta linea

    Entidad ent = LlenarGrid.LlenarGrSecNvl1(Nvl);

    el metodo LlenarGrSecNvl1() devuelve un List<InstGrSecNvl1>, o sea una lista

    pero estas asignandolo a una entidad

    es por eso que deberias crear otro metodo que devuelve una sola entidad buscandolo buscando por id

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 20 de julio de 2015 19:28
  • Modifique el fuente del boton filtar pero ahora me carga el ultimo registro de la seleccion de la gridview principal

     protected void BtnFiltar_Click(object sender, EventArgs e)
            {
    	
    	        foreach (GridViewRow row in GrPrincipal.Rows)
    	        {
    		        CheckBox check = row.FindControl("chkRow") as CheckBox;
                    if (check.Checked)
                    {
                        int Nvl = Convert.ToInt32(GrPrincipal.DataKeys[row.RowIndex].Value);
                        var lists = LlenarGrid.LlenarGrSecNvl1(Nvl);
                        Session["datos"] = lists;
    
                    }
    	        }
    
                GrSecundaria.DataSource = Session["datos"];
                GrSecundaria.DataBind();
            }

    Si selecciono dos id diferentes solo carga el ultimo id y sus registros asociados en la gridview secundaria

    Saludos

    LatinWater!

    lunes, 20 de julio de 2015 19:45
  • ehh creo que estas confundiendo el camino

    no puedes asignar la lista completa de LlenarGrSecNvl1() en al session directo

    necesitas ir agregandolo de a un item, pero necesitas implementar un metodo diferente que busque una entidad en base al id

    ese LlenarGrSecNvl1() no puedes usarlo

     int Nvl = Convert.ToInt32(GrPrincipal.DataKeys[row.RowIndex].Value);                    
    
    var item = LlenarGrid.ObtenerNvl1ById(Nvl);                    
    
    lists.Add(item);


    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 20 de julio de 2015 20:22
  • Asi parece estoy algo confundido camarada..

    Camarada ordenando el fuente como quedari, realmente estoy muy confundido

    protected void BtnFiltar_Click(object sender, EventArgs e) { List<Entidad> list = Session["list"] as List<Entidad>; foreach (GridViewRow row in GrPrincipal.Rows) {

    CheckBox check = row.FindControl("chkRow") as CheckBox; if (check.Checked) { int Nvl = Convert.ToInt32(GrPrincipal.DataKeys[row.RowIndex].Value); Entidad ent = LlenarGrid.LlenarGrSecNvl1(Nvl); list.Add(ent); } } GrSecundaria.DataSource = list; GrSecundaria.DataBind(); Session["list"] = list; }

    Tu me dices que aca esta el problema

    LlenarGrSecNvl1

    Segun esto ejecuta el siguiente codigo

     public static List<InstGrSecNvl1> LlenarGrSecNvl1(int Nvl)
            {
                List<InstGrSecNvl1> lista = new List<InstGrSecNvl1>();
                using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["Connection"].ToString()))
                {
                    conn.Open();
                    string query = "[sp_corporativo_BDContacto_FiltroNivel1_GrSec]";
                    SqlCommand cmd = new SqlCommand(query, conn);
                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.Parameters.AddWithValue("@IdNivel", Nvl);
                    SqlDataReader reader = cmd.ExecuteReader();
                    while (reader.Read())
                    {
                        lista.Add(ConvertirListFiltros(reader, true));
                    }
                }
                return lista;
            }
            private static InstGrSecNvl1 ConvertirListFiltros(IDataReader reader, bool cargarRelaciones)
            {
                InstGrSecNvl1 items = new InstGrSecNvl1();
                items.Ficha = Convert.ToInt32(reader["Ficha"]);
                items.Contacto = Convert.ToString(reader["Contacto"]);
                return items;
            } 

    Donde se genera mi problematica camarada

    Saludos

    LatinWater!



    lunes, 20 de julio de 2015 20:33
  • Ejecute el fuente y este error me aparece

    no se que puede ser si me pueden orientar estoy un poco confundido

    saludos

    LatinWater!


    • Editado LatinWater lunes, 20 de julio de 2015 20:48
    lunes, 20 de julio de 2015 20:47
  • sigues en el mismo camino incorrecto

    el metodo LlenarGrSecNvl1() devuelve una lista cuando deberias retornar solo una entidad

    el metodo deberia ser

    public InstGrSecNvl1 LlenarGrSecNvl1(){

      //resto codigo

    }

    pero a donde apunto es que si ese metodo lo usas para cargar el grid, deberias crear otro metodo que retorne la entidad simple

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 20 de julio de 2015 21:07
  • pero a donde apunto es que si ese metodo lo usas para cargar el grid, deberias crear otro metodo que retorne la entidad simple

    LlenarGrid.LlenarGrSecNvl1(Nvl);

    Llamo los registros del procedimiento almacenado para llenar la segunda gridview

    LatinWater!


    • Editado LatinWater lunes, 20 de julio de 2015 21:27
    lunes, 20 de julio de 2015 21:19
  • Ahora q puedo adjuntar imagenes explicare mas en detalle lo que quiero hacer.

    imagen del sitioWeb

    esta es la gridview principal.

    se carga con este

            protected void Page_Load(object sender, EventArgs e)
            {
                if (!this.IsPostBack)
                {
                    //Llena GrPrincipal 
                    LlenoGrPrincipal();
                }                 
            }
            private void LlenoGrPrincipal()
            {                         
                GrPrincipal.DataSource = LlenarGrid.LlenarGrNivel1();
                GrPrincipal.DataBind();
            }

    Hasta aca esta todo correcto si se fijan seleccione varios items de la gridview principal cuando se seleccione el button Filltar esto me tiene que cargar la segunda gridview con los registros filtrados por el id q selecciono

    selecciono el id("1" y "2") en un caso hipotetico me tendria q ejecutar esta consulta

    Datos del id = 1

    Ficha - Contacto

    1    Test
    2    Test II
    3    Test III

    Datos del id = 2

    Ficha - Contacto

    4 test IV

    y esto se tiene q contener en la segunda gridview

    Espero haber aclarado un poco mas la problematica?

    Saludos

    LatinWater!

    lunes, 20 de julio de 2015 21:36
  • hola

    se entiende lo que planteas, lo que pasa es que el metodo LlenarGrSecNvl1() le pasas de a un id a la vez, un id = entidad que agregas a la lista

    por eso iteras por las rows marcadas en el primer grid

    - tomas un id marcado del primer grid

    - recuperas la entidad que pertenerce a ese id

    - lo agregas a la lista

    - vuelves a empezar

    - cuando el foreach termina asignas la lista al segundo grid

    esto es lo que entiendo quieres lograr, por eso es que marco que el metodo LlenarGrSecNvl1() recibe un id por parametro y devuelve una entidad simple como respuesta

    -----

    ahora si lo que buscas es llamar al metodos LlenarGrSecNvl1() pasandole una lista de id todos de una vez y que esto retorne una lista de entidades que pertenecen esos id que les pasaste, el camino es muy distinto

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta LatinWater martes, 21 de julio de 2015 14:53
    martes, 21 de julio de 2015 6:48
  • Gracias leandro me aclaraste las dudas que me ivan surgiendo aca dejo el fuente resulto para quien lo necesite.

    Nivel1.aspx.cs

    protected void BtnFiltar_Click(object sender, EventArgs e)
            {
                List<Entidad> listValor = new List<Entidad>();
               //List<Entidad> list = Session["list"] as List<Entidad>;
                List<InstGrSecNvl1> list = new List<InstGrSecNvl1>();
                foreach (GridViewRow row in GrPrincipal.Rows)
                {
                    CheckBox check = row.FindControl("chkRow") as CheckBox;
                    if (check.Checked)
                    {
                        int Nvl = Convert.ToInt32(GrPrincipal.DataKeys[row.RowIndex].Value);
                        list.AddRange( LlenarGrid.LlenarGrSecNvl1(Nvl));
                    }
                }
                GrSecundaria.DataSource = list;
                GrSecundaria.DataBind();
                //Session["list"] = listValor;
            }


    LlenarGrid.cs

      public static List<InstGrSecNvl1> LlenarGrSecNvl1(int nvl)
            {
                List<InstGrSecNvl1> lista = new List<InstGrSecNvl1>();
                using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["Connection"].ToString()))
                {
                    conn.Open();
                    string query = "[sp_corporativo_BDContacto_FiltroNivel1_GrSec]";
    
                    SqlCommand cmd = new SqlCommand(query, conn);
                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.Parameters.AddWithValue("@IdNivel", nvl);
    
                    SqlDataReader reader = cmd.ExecuteReader();
                    InstGrSecNvl1 items = null;
                    while (reader.Read())
                    {
                        items = new InstGrSecNvl1();
    
                        items.Ficha = Convert.ToInt32(reader["Ficha"]);
                        items.Contacto = Convert.ToString(reader["Contacto"]);
                        items.Mail = Convert.ToString(reader["Mail"]);
                        items.Nivel1 = Convert.ToString(reader["Nivel1"]);
                        items.Nivel2 = Convert.ToString(reader["Nivel2"]);
                        items.Cargo = Convert.ToString(reader["Cargo"]);
                        lista.Add(items);
                        //lista.Add(ConvertirListFiltros(reader, true));
                    }
                }
                return lista;
            }
    items = new InstGrSecNvl1

    InstGrid.cs

    using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace BaseCorp.Clases {

    public class InstGrSecNvl1 { public int Ficha { get; set; } public string Contacto { get; set; } public string Mail { get; set; } public string Nivel1 { get; set; } public string Nivel2 { get; set; } public string Cargo { get; set; } } }

    Saludos

    LatinWater!


    • Marcado como respuesta LatinWater martes, 21 de julio de 2015 14:56
    • Editado LatinWater martes, 21 de julio de 2015 14:57
    martes, 21 de julio de 2015 14:56