[ Foro de C# ]

Seleccionar Registro en un Gridview y mostrarlo en otro gridview situado en otro webform C# ASP.NET

05-Mar-2015 19:10
Invitado (Fer)
2 Respuestas

necesito mostrar el dato seleccionado y mostrarlo en otro webform pero esta vez mostrando mas a detalle el registro que quiero ver en otro gridview
el otro webform lo tengo listo, la forma en que lo tengo listo es que al seleccionar el registro utilizando un boton en una columna en cada registro, este tome el ID de la seleccion y lo mande al otro webform para que lo pueda mostrar en el gridview del segundo webform

este es el codigo del webform 1


namespace Cfe.FacthorDiv.Perfiles.Web
{
    public partial class Test : PerfilesBase
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                CargaGrupos();
                CargaAreas(); 
            }
         CargaDatos(int.Parse(DropDownList1.SelectedValue), int.Parse(DropDownList2.SelectedValue));
        }
        private  void CargaGrupos()
        {
            DropDownList1.DataSource = Factory.Clientes.GetGrupos();
            DropDownList1.DataValueField = "IdGrupo";
            DropDownList1.DataTextField = "Descripcion";
            DropDownList1.AppendDataBoundItems = true;
            DropDownList1.AutoPostBack = true;
            DropDownList1.DataBind();
        }
        private  void CargaAreas()
        {
            DropDownList2.DataSource = Factory.Clientes.GetAreasResponsabilidad();
            DropDownList2.DataValueField = "IdAreaResponsabilidad";
            DropDownList2.DataTextField = "Descripcion";
            DropDownList2.AppendDataBoundItems = true;
            DropDownList2.AutoPostBack = true;
            DropDownList2.DataBind();
        }
        private void CargaDatos(int IdGrupo, int IdAreaResponsabilidad)
        {
            GridView2.DataSource = Factory.Clientes.GetPerfiles(IdGrupo, IdAreaResponsabilidad);
            GridView2.DataBind();
        }
       

        protected void GridView2_SelectedIndexChanged3(object sender, EventArgs e)
        {  } 
        protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
        {  }
        protected void DropDownList2_SelectedIndexChanged(object sender, EventArgs e)
        {  }
        
        protected void Button1_Click(object sender, EventArgs e)
        {  } 
 }}


este es el codigo del webform 2


namespace Cfe.FacthorDiv.Perfiles.Web
{
    public partial class Detalles : PerfilesBases
    {
         protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                CargaDetalles(//AQUI ID CLIENTE SELECCIONADO EN WEBFORM 1) 
                
            }
        }
         private void CargaDetalles(int IdCliente) 
         {

             GridView1.DataSource = Factory.Clientes.GetDetalles(IdCliente);
             GridView1.DataBind();
         }

         protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
         {

         }
}}





10-Mar-2015 15:38
Nacho Cabanes (+83)

Lo siento, no puedo ayudarte con eso, no uso WebForms, así que sólo podré ayudarte con las cosas que sean muy similares a otras tecnologías web (como PHP) o de escritorio (como WinForms). No veo en tu código cual es el nombre público de los DropDown, que se debería recibir como datos POST en la segunda página.


11-Mar-2015 18:09
Invitado (Fernando)

ya lo solucione :D

para poder hacer esto lo que hice fue utilizar querystring de esta manera
lo dejo para que las personas que se atoren puedan solucionarlo así que dejo el código y lo explico

primer que nada iniciamos en la primer pagina donde queremos seleccionar una celda y mostrar mas detalle del la persona o cosa que seleccionamos yo lo hice de esta manera
agregamos un select en nuestro gridview, una vez que lo agreguemos utilizamos este codigo en el cual nos permite recuperar el dato seleccionardo y guardarlo en una variable, en este caso en  GridViewRow row = GridView2.SelectedRow; nos permite recuperar un dato mientras que int id = Convert.ToInt32(row.Cells[1].Text); nos permite almacenar el dato de  la columna que seleccionamos en este caso es la columna 1 que se encuentra  en la celda 1 y representa el ID del objeto seleccionado una vez que se almacena el response.redirect nos manda a la pagina deseada junto con el id del campo seleccionado lo cual va de este modo "Detalles.aspx?id=" + id +"" importante poner los signos mas lo cual representaran el valor recuperado de la celda
y al mandarnos a la pagina veremos que en la barra de direcciones de nuestro navegador estara el ID del objeto seleccionado de esta forma : http://localhost:12636/Detalles.aspx?id=6620 en este caso el id es el 6620 dejo el codigo:

private void CargaDetalles()
       {
           GridViewRow row = GridView2.SelectedRow;
           int id = Convert.ToInt32(row.Cells[1].Text);
          Response.Redirect("Detalles.aspx?id=" + id +"");
       
       }
       protected void GridView2_SelectedIndexChanged3(object sender, EventArgs e)
       {
           CargaDetalles();    
       }


en la segunda pagina llamada Detalles.aspx utilizaremos querystring
del cual nos permite recuperar el id mandado de la pagina anterior y lo almacena en una variable llamada id y representa el valor del id de CargaDetalles donde esta situada nuestra query

if (!Page.IsPostBack)
           {
               var id = Convert.ToInt32(Request.QueryString["id"]);
               CargaDetalles(id);
           }
       }
        private void CargaDetalles(int IdCliente)
        {
            GridView1.DataSource = Factory.Clientes.GetDetalles(IdCliente);
            GridView1.DataBind();


espero sea de mucha ayuda, busque en muchos lugares donde entre varios enlaces solucione mi duda, querystring en una, el recuperar el dato otra y mandar a otra pagina de otra, tambien lo encontre utilizando javascript en codigo c# donde almacenaremos el codigo javascript en un string lo dejo para ayudar de esta manera tambien me funciona el unico problema es que la pagina principal me pierde el formato de mi pagina lo cual esteticamente se ve muy mal asi qque preferi dejarlo como arriba


//string str;
          // str = "window.open('Detalles.aspx?id=" + id + "', '_blank')";
          // Response.Write("<script languaje=javascript>" + str + "</script>");






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)