Hola de nuevo, bueno te digo lo que haría yo.
Tienes dos páginas: primerapagina.aspx y segundapagina.aspx
en la primerapagina.aspx tienes un gridview con el listado de unos productos.
Así sería el codebehind:
Código:
protected void Page_Load(object sender, EventArgs e)
{
DataTable dtProductos = new DataTable();
dtProductos.Columns.Add("idproducto");
dtProductos.Columns.Add("NombreProducto");
DataRow Row = dtProductos.NewRow();
Row[0] = “1”;
Row[1] = “judias”;
dtProductos.Rows.Add(Row);
GridviewProductos.DataSource = dtProductos.DefaultView;
GridviewProductos.DataBind();
}
public string ComponerUrl(string IdCodigo)
{
//Compones cada fila con una url distina
para pasarle el codigo del producto que luego recogeras
en la segunda página
//Esto lo puedes meter en el modo diseño,
pero te aconsejo que lo hagas aquí porque
aquí podrás llamar a una clase que lo encripte
en el caso que quieras encriptar el código, el
nombre o lo que vayas a pasarle.
Recuerda que esta función la llamas desde el
gridview que te muestro a continuación
return "~/segundapagina.aspx?id_proc =" + IdCodigo;
}
Y el siguiente código es como debes mostrar el gridview de la primerapagina.aspx:
Código:
<asp:GridView ID="GridviewProductos" runat="server" >
<Columns>
<asp:TemplateField HeaderText="Nombre"
ItemStyle-HorizontalAlign="Center"
HeaderStyle-HorizontalAlign="Left" >
<ItemTemplate>
<asp:Label ID="LblNombreproducto"
runat="server" Text='<%#
Eval("NombreProducto") %>'></asp:Label>
</ItemTemplate>
<HeaderStyle HorizontalAlign="Left"></HeaderStyle>
<ItemStyle HorizontalAlign="Left"></ItemStyle>
</asp:TemplateField>
<asp:TemplateField HeaderText="Ir"
ItemStyle-HorizontalAlign="Center" HeaderStyle-HorizontalAlign="Center" >
<ItemTemplate>
<asp:ImageButton runat="server" ID="ImgIr"
ImageUrl="~/Botones/Ir.png"
CommandName="image" PostBackUrl='<%# ComponerUrl
(DataBinder.Eval(Container, "DataItem.idproducto").ToString()) %>'
ToolTip="Ir al producto" />
</ItemTemplate>
<HeaderStyle HorizontalAlign="Center"></HeaderStyle>
<ItemStyle HorizontalAlign="Center"></ItemStyle>
</asp:TemplateField>
</Columns>
</asp:GridView>
Lo que acabas de hacer es mostrar los productos, tienes dos items en el gridview, un label que te muestra el nombre del producto y un botón que te mandará a otra página con más información de ese producto.
Pues en el codebehind de segundapagina.aspx harias esto:
Código:
protected void Page_Load(object sender, EventArgs e)
{
//recoges el Id que le pasas por URL
string IdProducto = Server.UrlDecode(Request.QueryString["id_proc"].ToString());
//aquí recibes el Id del Producto,
ahora haces un select con ese de Id Producto a la
base de datos y recibes los datos de ese producto
y lo muestras en los textbox,combos,gridviews que
te montes en la segunda página.
}
Suerte