Hola:
Otra vez por acá...Bueno, he leído que existe un control llamado DetailsView
y lo que he intentado es hacer que al seleccionar un registro en mi GridView, me muestre los datos que quiero en el DetailsView. Con lo que he encontrado en internet, no logro hacer que me funcione, ya que trato de adecuarlo según lo que tengo, pero nada.
Lo hice con el asistente(sólo para ver como queda), pero no es mi fin, ya que queda según mi opinion
enrredado el código, y lo que quiero es separar diseño y código
Acá dejo como tengo el DetailsView en default.aspx.
---------------------------------------------------------------------
<asp:DetailsView ID="DV" AutoGenerateRows="False" HeaderText="Datos" runat="server" SkinID="DetailsView1" DefaultMode="ReadOnly" Width="100%" OnPreRender="DV_OnPreRender">
<Fields>
<asp:TemplateField>
<ItemTemplate>
<td class="Etiqueta_Details">NOMBRE</td>
<td><asp:Label runat="server" ID="lblNombre"></asp:Label></td>
<td class="Etiqueta_Details">FONO</td>
<td><asp:Label runat="server" ID="lblFono"></asp:Label></td>
</ItemTemplate>
</asp:TemplateField>
</Fields>
</asp:DetailsView>
Y mi Default.aspx.cs
----------------------------------------------------------------------------
using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
namespace ASPNETFuturesEnabledWebApplication1
{
public partial class _Default : System.Web.UI.Page
{
DataSet myDataSet;
SqlConnection cnx = new SqlConnection(ConfigurationManager.ConnectionStrin gs["Grid"].ConnectionString);
protected void Page_Load(object sender, EventArgs e)
{
IncializaDropDownList();
try
{
cnx.Open();
SqlDataAdapter myAdapter = new SqlDataAdapter("SELECT ID, NOMBRE,FONO,CIUDAD FROM CONTACTOS", cnx);
myDataSet = new DataSet();
myAdapter.Fill(myDataSet);
GV1.DataSource = myDataSet;
GV1.DataBind();
}
catch
{
LBL1.Text = "Algo Ocurrio";
}
finally
{
cnx.Close();
}
}
protected void GV1_SelectedIndexChanged(object sender, EventArgs e)
{
//DV.Visible = true;
LBL1.Text = "Seleccionaste un Registro";
}
protected void DV_OnPreRender(object sender, EventArgs e)
{
if (GV1.SelectedDataKey != null)
{
SqlDataAdapter Datos = new SqlDataAdapter("SELECT NOMBRE, FONO FROM CONTACTOS
WHERE ID" = +GV1.SelectedDataKey.Value.ToString());
DV.DataSource = Datos.DataView;
DV.DataKeyNames = new string[] { "ID" };
DV.Visible = true;
DV.DataBind();
switch (DV.CurrentMode)
{
case DetailsViewMode.ReadOnly:
((Label)DV.FindControl("lblNombre")).Text = Datos["NOMBRE"].ToString().Replace('.', ',');
((Label)DV.FindControl("lblFono")).Text = Datos["FONO"].ToString().Replace('.', ',');
}
}
//Lo que esta en cursiva es lo que me subrraya como error al momnto de ejecutar.
}
internal void IncializaDropDownList()
{
cnx.Open();
SqlDataAdapter myAdapter2 = new SqlDataAdapter("SELECT NOMBRE
FROM CONTACTOS", cnx);
myDataSet = new DataSet();
myAdapter2.Fill(myDataSet);
this.DDL1.DataSource = myDataSet;
this.DDL1.DataValueField = "NOMBRE";
this.DDL1.DataTextField = "NOMBRE";
this.DDL1.DataBind();
cnx.Close();
}
}
}
Bueno todo esto lo estoy haciendo para aprender(Por eso es como básico mi proyecto)
Se agradece cualquier aporte, Salu2.