none
Obtener un campo en rowdeleting RRS feed

  • 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

    domingo, 11 de agosto de 2013 16:48

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

    domingo, 11 de agosto de 2013 18:33
    Moderador
  • 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

    domingo, 11 de agosto de 2013 18:49

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 explicado


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó vótala como útil. Saludos

    domingo, 11 de agosto de 2013 17:42
    Moderador
  • 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

    domingo, 11 de agosto de 2013 17:52
  • 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

    domingo, 11 de agosto de 2013 18:33
    Moderador
  • 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

    domingo, 11 de agosto de 2013 18:49