net example dinamicamente crear columnas asp c# asp.net .net gridview

c# - example - Valores de la columna GridView Linking



templatefield gridview c# asp net (2)

Actualiza tu método GetG1 al siguiente:

public static DataTable GetG1(int? id=null) { DataTable dt = new DataTable(); string strcon = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString; using (SqlConnection conn = new SqlConnection(strcon)) { conn.Open(); if(id.HasValue) { string strQuery = "Select * From ManLog Where Id=@id"; SqlCommand cmd = new SqlCommand(strQuery, conn); cmd.Parameter.Add(new SqlParameter("id",id.Value); SqlDataAdapter da = new SqlDataAdapter(cmd); da.Fill(dt); } else { string strQuery = "Select * From ManLog"; SqlCommand cmd = new SqlCommand(strQuery, conn); SqlDataAdapter da = new SqlDataAdapter(cmd); da.Fill(dt); } } return dt; }

Entonces, como ya ha publicado Joel, debe pasar una identificación al enlace de su segunda vista de cuadrícula. Por este motivo, debe actualizar el controlador de eventos Page_Load de su primer formulario web, donde reside GridView1.

protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { int id; if(int.TryParse(Request.QueryString["id"], out id) { GridView1.DataSource = DataRepository.GetG1(id); GridView1.DataBind(); } else { GridView1.DataSource = DataRepository.GetG1(); GridView1.DataBind(); } } }

Por último, pero no menos importante, debe actualizar los enlaces correspondientes en GridView2.

<ItemTemplate> <asp:LinkButton ID="lblEAICode" runat="server" Text=''<%# Eval("EAI_Code") %>'' /> </ItemTemplate>

En el atributo Texto, debe colocar ''../../gridview1.aspx?id=<%# Eval("EAI_Code") %>'' , donde ../../gridview1.aspx es la ruta relativa de la web forma en que reside gridview1.

ACTUALIZAR

<asp:LinkButton runat="server" CommandArgument=''<%# Eval("EAI_Code") %>'' OnCommand="LinkButton_Click" Text="View"> </asp:LinkButton>

agregue el siguiente controlador para el evento click de su botón de enlace en su código detrás de la clase

protected void LinkButton_Click(Object sender, CommandEventArgs e) { if (e.CommandArgument != null) { Response.Redirect("../Product%20Profit.aspx?id=" + e.CommandArgument.ToString()); } }

Tengo dos vistas de cuadrícula en pantallas separadas.

GridView1

ID Product Date Amount 1 Car1 02/03/2014 $ 15,000 1 Car2 05/03/2014 $ 10,000 2 Bike 01/01/2014 $ 2,500 3 Bus 06/04/2014 $ 25,000

GridView2

ID Product Date Amount 1 Car2 05/03/2014 $ 25,000 2 Bike 01/01/2014 $ 2,500 3 Bus 06/04/2014 $ 25,000

Gridview2 resume valores de fila de ID similares de GridView1 y muestra en GridView2 la última Fecha de vigencia.

Ahora estoy mostrando mi columna de ID en GridView2 como LinkButton. Cuando hago clic en el valor 1 en la columna ID de GridView2, tengo que navegar a GridView1 y mostrar solo los valores de ID 1 en la grilla.

Código detrás:

GridView1

protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { GridView1.DataSource = DataRepository.GetG1(); GridView1.DataBind(); } } public static DataTable GetG1() { DataTable dt = new DataTable(); string strcon = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString; using (SqlConnection conn = new SqlConnection(strcon)) { conn.Open(); string strQuery = "Select * from ManLog"; SqlCommand cmd = new SqlCommand(strQuery, conn); SqlDataAdapter da = new SqlDataAdapter(cmd); da.Fill(dt); } return dt; }

GridView2

protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { GridView2.DataSource = DataRepository.GetG2(); GridView2.DataBind(); } } public static DataTable GetG2() { DataTable dt = new DataTable(); string strcon = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString; using (SqlConnection conn = new SqlConnection(strcon)) { conn.Open(); string strQuery = "Select ID, Product, max(Date),sum(Amount) from ManLog"; SqlCommand cmd = new SqlCommand(strQuery, conn); SqlDataAdapter da = new SqlDataAdapter(cmd); da.Fill(dt); } return dt; }

Botón de enlace para GridView 2:

<asp:TemplateField HeaderText="ID" SortExpression="ID"> <HeaderStyle HorizontalAlign="Center"></HeaderStyle> <ItemStyle HorizontalAlign="Center" Width="25%" /> <EditItemTemplate> <asp:TextBox ID="txtID" Width="100%" runat="server" Enabled="false" Text=''<%# Eval("ID") %>''></asp:TextBox> </EditItemTemplate> <ItemTemplate> <asp:LinkButton ID="lblID" runat="server" Text=''<%# Eval("ID") %>'' /> </ItemTemplate> </asp:TemplateField>


No estoy seguro de cuál es exactamente tu pregunta o cómo se presenta tu página, pero creo que debes establecer la url en el enlace GridView2 a algo así como GridView1Page.aspx?id=1 luego usar QueryString para cargar solo el carné de identidad. Si no usa la url o no desea publicar, intente con una variable de Session .

Entonces, en su método de enlace a la red tiene algo como:

if (Request.QueryString["id"] != null) { //load some: select * from table where id = Request.QueryString["id"] } else { //load all (select * from table) }