Foros del Web » Programando para Internet » ASPX (.net) »

[SOLUCIONADO] Pasar el valor de un Label en GRIDvIEW

Estas en el tema de Pasar el valor de un Label en GRIDvIEW en el foro de ASPX (.net) en Foros del Web. Buenas tardes, Me gustaría saber como puedo "coger" o "seleccionar" un label de un gridview. Tengo este gridview en mi pagina aspx: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código ...
  #1 (permalink)  
Antiguo 25/04/2013, 05:18
 
Fecha de Ingreso: octubre-2012
Ubicación: Pozuelo de Alarcón
Mensajes: 67
Antigüedad: 11 años, 6 meses
Puntos: 1
Pasar el valor de un Label en GRIDvIEW

Buenas tardes,

Me gustaría saber como puedo "coger" o "seleccionar" un label de un gridview.

Tengo este gridview en mi pagina aspx:
Código ASP:
Ver original
  1. <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
  2.         DataKeyNames="id_user" DataSourceID="ObjectDataSource1" SkinID="GV"
  3.         style="margin-top: 0px" AllowPaging="True" AllowSorting="True" >
  4.        
  5.         <Columns>
  6.            
  7.              <asp:TemplateField HeaderText="Pool" SortExpression="pool">
  8.                 <ItemTemplate>
  9.                     <asp:Label ID="Label1" runat="server" Text='<%# Bind("pool") %>'></asp:Label>
  10.                 </ItemTemplate>
  11.             </asp:TemplateField>
  12.             <asp:TemplateField HeaderText="Name" SortExpression="name">
  13.                 <ItemTemplate>
  14.                     <asp:Label ID="Label2" runat="server" Text='<%# Bind("name") %>'></asp:Label>
  15.                 </ItemTemplate>
  16.             </asp:TemplateField>
  17.             <asp:TemplateField HeaderText="User Id" SortExpression="id_user">
  18.                 <ItemTemplate>
  19.                     <asp:Label ID="Label11" runat="server" Text='<%# Bind("id_user") %>'></asp:Label>
  20.                 </ItemTemplate>
  21.             </asp:TemplateField>
  22.  
  23.             <asp:TemplateField HeaderText="Launch">
  24.                 <ItemTemplate>
  25.                  <asp:Button ID="LaunchButton" runat="server" Text="Launch" CssClass="normalButton" onclick="btnLaunch_Click" />
  26.                 </ItemTemplate>
  27.             </asp:TemplateField>
  28.         </Columns>
  29.     </asp:GridView>


y en mi fichero .cs me gustaria coger el valor de label11.

he intentado lo siguiente:

Código c#:
Ver original
  1. count.id_user = GridView1.Label11.Text;

Error: 'System.Web.UI.WebControls.GridView' does not contain a definition for 'Label11' and no extension method 'Label11' accepting a first argument of type 'System.Web.UI.WebControls.GridView' could be found (are you missing a using directive or an assembly reference?)

Tambien intente esto:

Código c#:
Ver original
  1. count.id_user = Convert.ToInt32(GridView1.SelectedRow.Cells[3].Text);

Error: Object reference not set to an instance of an object.
[NullReferenceException: Object reference not set to an instance of an object.]
Warehouse_Warehouse_Launch_Count.btnLaunch_Click(O bject sender, EventArgs e) in c:\inetpub\wwwroot\Walt\Logistics\Launch_Count.asp x.cs:39
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +111
System.Web.UI.WebControls.Button.RaisePostBackEven t(String eventArgument) +110
System.Web.UI.WebControls.Button.System.Web.UI.IPo stBackEventHandler.RaisePostBackEvent(String eventArgument) +10
System.Web.UI.Page.RaisePostBackEvent(IPostBackEve ntHandler sourceControl, String eventArgument) +13
System.Web.UI.Page.RaisePostBackEvent(NameValueCol lection postData) +36
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1565

¿Alguien sabe que hago mal?¿Como podría coger ese dato?

Muchas gracias por su ayuda!

Un saludo.
  #2 (permalink)  
Antiguo 30/04/2013, 01:44
 
Fecha de Ingreso: abril-2013
Ubicación: Toledo
Mensajes: 9
Antigüedad: 11 años
Puntos: 1
Respuesta: Pasar el valor de un Label en GRIDvIEW

Los objetos usados dentro de la campos template de las grids no pueden ser referenciados directamente .Te paso como lo hago yo en Vb, siento no traducirtelo pero ando un poco pez en C.

Dim mylabel as label
For Each row As GridViewRow In GridView1.Rows
mylabel = row.findcontrol("label11")
count.id_user= mylabel.text
.....
.....
next

Espero que te sirva, un saludo

Última edición por LuiseteT; 30/04/2013 a las 01:53
  #3 (permalink)  
Antiguo 30/04/2013, 02:27
 
Fecha de Ingreso: octubre-2012
Ubicación: Pozuelo de Alarcón
Mensajes: 67
Antigüedad: 11 años, 6 meses
Puntos: 1
Respuesta: Pasar el valor de un Label en GRIDvIEW

Buenos días,

Muchas gracias por su respuesta,

Me di cuenta de que así no se podía y lo he cambiado a esta forma:


Código ASP:
Ver original
  1. <asp:GridView ID="GridView1" SkinID="GV" runat="server" AutoGenerateColumns="False"
  2.         DataKeyNames="id_user" OnRowCommand="LaunchCount" DataSourceID="ObjectDataSource1"  
  3.         style="margin-top: 0px" Visible="True" AllowPaging="True">        
  4.         <Columns>
  5.             <asp:BoundField DataField="pool" HeaderText="pool" InsertVisible="False" ReadOnly="True" SortExpression="pool" />
  6.             <asp:BoundField DataField="name" HeaderText="name" SortExpression="name" />
  7.             <asp:BoundField DataField="id_user" HeaderText="id_user" SortExpression="id_user" />
  8.            <asp:ButtonField ButtonType="Button" CommandName="LaunchCount" Text="Launch" />
  9.         </Columns>
  10.     </asp:GridView>


Y para seleccionar las celdas de la fila en cuestión en el fichero .cs he puesto lo siguiente:

Código c#:
Ver original
  1. protected void LaunchCount(object sender, GridViewCommandEventArgs e)
  2.     {
  3.  
  4.         if (e.CommandName == "LaunchCount")
  5.         {
  6.         //creates a new Cycle count row
  7.         CountBLL countInsertar = new CountBLL();
  8.         CountTO count = new CountTO();
  9.  
  10.         GridView1.SelectedIndex = Convert.ToInt32(e.CommandArgument);
  11.         GridViewRow row = GridView1.SelectedRow;
  12.        
  13.         count.id_user = Convert.ToInt32(row.Cells[3].Text) ;
  14.         count.count_type = "W2W";
  15.         count.round = 1;
  16.         count.status = "launch";
  17.         count.date = DateTime.Now;
  18.  
  19.         countInsertar.insertCount(count);
  20.         Session["id_count"] = countInsertar.SelectMAX_id_count(count.id_user);
  21.         }
  22.         Response.Redirect("Warehouse_Wall2Wall_Count_Launched.aspx");
  23.     }

Pero aun así me da un error de tipos en la conversión:

Input string was not in a correct format.

Algo que todavía no he conseguido solucionar. Si alguien sabe como por favor que me lo diga.

Cuando tenga el problema resulto colgare la solución.

Un saludo y Muchas gracias.
  #4 (permalink)  
Antiguo 30/04/2013, 04:37
 
Fecha de Ingreso: abril-2013
Ubicación: Toledo
Mensajes: 9
Antigüedad: 11 años
Puntos: 1
Respuesta: Pasar el valor de un Label en GRIDvIEW

No se donde te dara el error exactamente, me temo que en eso no puedo ayudarte.
Si lo incluyes con boundfield y lo metes como Datakey tambien puedes obtener el valor de la siguiente manera aplicandole las necesarias conversiones de tipos.

count.id_user = Gridview1.SelectedDataKey("id_user")
  #5 (permalink)  
Antiguo 10/05/2013, 17:14
 
Fecha de Ingreso: junio-2012
Ubicación: Cercado de Lima - Lima - Peru
Mensajes: 27
Antigüedad: 11 años, 10 meses
Puntos: 2
Respuesta: Pasar el valor de un Label en GRIDvIEW

Estas tomando la columna 3 que es un boton! Pues las columnas y filas se leen
0,1,2,3,4.... es decir comienzan en cero.
  #6 (permalink)  
Antiguo 13/05/2013, 11:25
 
Fecha de Ingreso: mayo-2013
Ubicación: Oaxaca de Juarez, Oaxaca
Mensajes: 7
Antigüedad: 10 años, 11 meses
Puntos: 1
Respuesta: Pasar el valor de un Label en GRIDvIEW

Hola buen día,

La verdad no se si con esto te pueda ayudar pero yo lo que haría sería dentro del metodo RowDataBound de mi gridview metería algo así:
Código:
protected void gdContactos_RowDataBound(object sender, GridViewRowEventArgs e)
    {        
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
              string str = DataBinder.Eval(e.Row.DataItem, "CampoValor").ToString();
              Label etiquetaGrid = (Label) e.Row.FindControl("label11");
     
              //puedes poner un boton en tu gridview y despues darle la accion
              
              Button botonAccion = (Button)e.Row.FindControl("btnAccion");
              botonAccion.CommandArgument = etiquetaGrid.Text;
        }
}

Con eso le estas pasando el valor a tu etiqueta y con la accion del boton puedes hacer lo siguiente:

protected void btnAccion_Click(object sender, EventArgs e)
    {
        // Escribe el valor donde tu quieras
        Button btnAux = (Button) sender;
        var auxiliar = btnAux.CommandArgument;
    }

Saludos.

Última edición por Malenko; 14/05/2013 a las 03:55
  #7 (permalink)  
Antiguo 21/05/2013, 02:24
 
Fecha de Ingreso: octubre-2012
Ubicación: Pozuelo de Alarcón
Mensajes: 67
Antigüedad: 11 años, 6 meses
Puntos: 1
Respuesta: Pasar el valor de un Label en GRIDvIEW

Muchas gracias por su ayuda!La verdad que ha sido de gran utilidad!

Un saludo.

Etiquetas: asp, aspx, gridview, label, net, server, valor
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:06.