none
Problema al abrir archivos desde un imagen button dentro de un repeater asp.net RRS feed

  • Pregunta

  • Tengo un repeater donde tengo labels y un imagebutton , donde a travez de una consulta lleno mis controles con los valores respectivos. El problema aparece cuando quiero hacer click en el image button para abrir el archivo respectivo , en primer lugar no me reconoce el evento click de mi image button donde tengo el codigo para abrir los archivos segun el valor de su ruta. Y en segundo lugar no estoy seguro si es la forma correcta de asignar la ruta al imagebutton para poder abrir el archivo.

     Public Class RowData
            Private m_Index As Integer
            Private m_fechaentre As String
            Private m_rutaArchi As String
            Public Property Seq() As Integer
                Get
                    Return m_Index
                End Get
                Set(value As Integer)
                    m_Index = value
                End Set
            End Property
            Public Property fechaentre() As String
                Get
                    Return m_fechaentre
                End Get
                Set(value As String)
                    m_fechaentre = value
                End Set
            End Property
      
            Public Property rutaArchi() As String
                Get
                    Return m_rutaArchi
                End Get
                Set(value As String)
                    m_rutaArchi = value
                End Set
            End Property
        End Class
        Public Sub loaddata() 
    Dim selectSQL7 As String
                selectSQL7 = "select F.idPracti,F.nombreArchi,('Mes'+ ' ' + right(F.nombreArchi, 1))as Mes,F.rutaArchi,CONVERT(varchar(11),F.fechaReDocu,103) as fechaReDocu,SO.razonSoEmpre from opp.tblseguimiento F inner join opp.[tblPractica] P on F.idPracti=P.idPracti inner join opp.[tblSolicitud] SO on P.idSoli=SO.idSoli where F.idPracti='" & Session("idPracti") & "' and nombreArchi is not null and F.idTiSegui not in ('0201-00','0201-01','0201-02','0201-03','0201-04','0201-17','0201-18','0201-19','0201-20','0201-21')"
    
                Dim cmd7 As New SqlCommand(selectSQL7, con)
                Dim olector7 As SqlDataReader
    
                con.Open()
                olector7 = cmd7.ExecuteReader()
    
                Dim dataSource As New List(Of RowData)
                Dim I = 1
    
                While olector7.Read()
         
    
                    dataSource.Add(New RowData() With {.Seq = I, .fechaentre = olector7("fechaReDocu").ToString, .rutaArchi = olector7("rutaArchi")})
                    I = I + 1
                    Session("rutaFichaMensual") = olector7("rutaArchi")
    
                End While
    
                olector7.Close()
                con.Close()
    
    
                Me.rpt.DataSource = dataSource
                Me.rpt.DataBind()
    
    
    End Sub

    Y me aparece este mensaje en el evento click de mi imagebutton

    

    codigo del repeater

    <asp:Repeater ID="rpt" runat="server">
                  <HeaderTemplate>
                      <table>
                  </HeaderTemplate>
                  <ItemTemplate>
                      <tr>
                     
                                      
           <td style="height: 26px">Ficha Mensual
                <asp:Label ID="indice" runat="server" Text ='<%#Eval("Seq")%>' Width="10px"></asp:Label>:&nbsp;
           </td>&nbsp;
           <td>
                <asp:Label ID="fechaentre" runat="server" Text ='<%#Eval("fechaentre")%>' Width="80px"></asp:Label>
           </td>
           <td>
               <asp:ImageButton ID="btndes" runat="server" Height="26px" ImageUrl="http://formulario.continental.edu.pe/OppWeb/images/descargarpdf.png"/>
           </td>
                          
                          </tr>
                  </ItemTemplate>
                  <FooterTemplate>
                      </table></FooterTemplate>
    </asp:Repeater>


    • Editado fredsale martes, 19 de enero de 2016 16:25
    martes, 19 de enero de 2016 16:20

Respuestas

  • Dentro del repeater los controles se generan de forma dinamica, por eso el Handler que define en codigo .net no funciona

    quita el handler y define en el html la asignacion al evento

    <asp:ImageButton ID="btndes" OnClick="btndes_Click" runat="server" Height="26px" ImageUrl="http://formulario.continental.edu.pe/OppWeb/images/descargarpdf.png"/>

    a ver si funciona


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 19 de enero de 2016 16:32

Todas las respuestas

  • Dentro del repeater los controles se generan de forma dinamica, por eso el Handler que define en codigo .net no funciona

    quita el handler y define en el html la asignacion al evento

    <asp:ImageButton ID="btndes" OnClick="btndes_Click" runat="server" Height="26px" ImageUrl="http://formulario.continental.edu.pe/OppWeb/images/descargarpdf.png"/>

    a ver si funciona


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 19 de enero de 2016 16:32
  • Muchas gracias leandro, pero ahora tengo un pequeño incoveniente, porque cuando descargo los archivos, el unico archivo que se descarga es el ultimo y este se repite en los 3 botones.


            Dim selectSQL7 As String
                selectSQL7 = "select F.idPracti,F.nombreArchi,('Mes'+ ' ' + right(F.nombreArchi, 1))as Mes,F.rutaArchi,CONVERT(varchar(11),F.fechaReDocu,103) as fechaReDocu,SO.razonSoEmpre from opp.tblseguimiento F inner join opp.[tblPractica] P on F.idPracti=P.idPracti inner join opp.[tblSolicitud] SO on P.idSoli=SO.idSoli where F.idPracti='" & Session("idPracti") & "' and nombreArchi is not null and F.idTiSegui not in ('0201-00','0201-01','0201-02','0201-03','0201-04','0201-17','0201-18','0201-19','0201-20','0201-21')"
    
                Dim cmd7 As New SqlCommand(selectSQL7, con)
                Dim olector7 As SqlDataReader
    
                con.Open()
                olector7 = cmd7.ExecuteReader()
    
                Dim dataSource As New List(Of RowData)
                Dim I = 1
    
                While olector7.Read()
         
    
                    dataSource.Add(New RowData() With {.Seq = I, .fechaentre = olector7("fechaReDocu").ToString, .rutaArchi = olector7("rutaArchi")})
                    Session("rutaFichaMensual") = olector7("rutaArchi")
    
                    I = I + 1
    
    
                End While
    
                olector7.Close()
                con.Close()
    
    
                Me.rpt.DataSource = dataSource
                Me.rpt.DataBind()

    martes, 19 de enero de 2016 17:00