Principales respuestas
Obtener un campo en rowdeleting

Pregunta
-
Hola a todos
Tengo un gridview
<Columns> <asp:CommandField HeaderText="Edición" ShowEditButton="true" EditText="Editar" ShowCancelButton="true" CancelText="Cancelar" ShowDeleteButton="true" DeleteText="Borrar" /> <asp:BoundField HeaderText="Nombre" DataField="nombre" HtmlEncode="false" ReadOnly="true" SortExpression="nombre" /> <asp:TemplateField HeaderText="Fichero" SortExpression="fichero"> <EditItemTemplate> <asp:FileUpload id="fufichero" runat="server" /> <asp:Label ID="lblficheroinvalido" visible="false" Text="Fichero inválido" runat="server" /> <asp:Label ID="lblficheroexistente" visible="false" Text="Fichero existente" runat="server" /> </EditItemTemplate> <ItemTemplate> <asp:Label Text='<%#eval("fichero") %>' runat="server" /> </ItemTemplate> <FooterTemplate> <asp:FileUpload id="fufichero" runat="server" /> <asp:LinkButton ID="lnkanadirficheros" ValidationGroup="ficheros" Text="Añadir" OnCommand="anadir" runat="server" /> <asp:Label ID="lblficheroinvalido" visible="false" Text="Fichero inválido" runat="server" /> <asp:Label ID="lblficheroexistente" visible="false" Text="Fichero existente" runat="server" /> </FooterTemplate> </asp:TemplateField> <asp:BoundField HeaderText="Tamaño" DataField="tamano" HtmlEncode="false" ReadOnly="true" SortExpression="tamano" /> </Columns>
¿cómo puedo obtener el valor de fichero? Parece que e.values solo funciona con los boundfield
Yo hago
Dim strfichero As String = e.Values("fichero"), strfoundfile As String, fi As FileInfo Response.Write("strfichero=" & strfichero) Response.Write("fichero2=" & gvficheros.Rows(e.RowIndex).Cells("fichero").Text) Response.End()
La penúltima sentencia me da error System.FormatException: La cadena de entrada no tiene el formato correcto
Os agradecería cualquier ayuda. Gracias de antemano
Respuestas
-
Prueba esto
Dim cell As TableCell
cell = GridView1.Rows(e.RowIndex).Cells(2)Dim strfichero As String = cell.Text
Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó vótala como útil. Saludos
- Marcado como respuesta Sergio ParraModerator jueves, 10 de noviembre de 2016 16:06
-
hola
primero define un id para el label
<ItemTemplate> <asp:Label Id="lblfichero" Text='<%#eval("fichero") %>' runat="server" /> </ItemTemplate>
entonces en el evento usa el FindControl() sobre el row que lanza la accion
usa el e.RowIndex para usar
Dim row As GridViewRow = GridView1.Rows(e.RowIndex)
Dim lbl As Label = DirectCast(row.FindControl("lblfichero"), Label)
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina- Marcado como respuesta Sergio ParraModerator jueves, 10 de noviembre de 2016 16:07
Todas las respuestas
-
Eso error suele darse porque en algún método se le pasa una cadena vacía. Si colocas un breakpoint y vas paso a paso que valores tienen las variables strfichero y gvficheros.Rows(e.RowIndex).Cells("fichero").Text??
A lo mejor tienes que consultar la celda por el índice gvficheros.Rows(e.RowIndex).Cells(0).Text por ejemplo,
ya que no pusiste ID="fichero" en alguna columna de tu grid. Espero haberme explicadoSi se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó vótala como útil. Saludos
-
Hola de nuevo:
Entendí perfectamente
Al hacer strfichero=e.values("fichero") me da nulo
El strfichero2 me da error de cadena de entrada con formato no correcto
No puedo referenciarlo de ninguna manera, a no ser que lo ponga en un boundfield. En este caso sí funciona el e.values("fichero")
Gracias por cualquier ayuda
-
Prueba esto
Dim cell As TableCell
cell = GridView1.Rows(e.RowIndex).Cells(2)Dim strfichero As String = cell.Text
Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó vótala como útil. Saludos
- Marcado como respuesta Sergio ParraModerator jueves, 10 de noviembre de 2016 16:06
-
hola
primero define un id para el label
<ItemTemplate> <asp:Label Id="lblfichero" Text='<%#eval("fichero") %>' runat="server" /> </ItemTemplate>
entonces en el evento usa el FindControl() sobre el row que lanza la accion
usa el e.RowIndex para usar
Dim row As GridViewRow = GridView1.Rows(e.RowIndex)
Dim lbl As Label = DirectCast(row.FindControl("lblfichero"), Label)
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina- Marcado como respuesta Sergio ParraModerator jueves, 10 de noviembre de 2016 16:07