2013-04-17 4 views
0

Je cherche un moyen de charger un fichier PDF sur un iFrame chaque fois qu'un rappel est déclenché par GridViewCommandColumnCustomButton dans un ASPxGridView. La raison en est que j'ai besoin d'un fichier PDF différent en fonction de la ligne sur laquelle ASPxGridView est cliqué.Charger iFrame sur la page callback

Voici comment je (sans succès) Manipulez le rappel au moment:

Protected Sub grid_CustomButtonCallback(ByVal sender As Object, ByVal e As DevExpress.Web.ASPxGridView.ASPxGridViewCustomButtonCallbackEventArgs) 
    If e.ButtonID = "bnPreview" Then 
     Dim grid As ASPxGridView = CType(sender, ASPxGridView) 
     Dim key As Object = grid.GetRowValues(e.VisibleIndex, grid.KeyFieldName) 
     Dim sFile = UploadReportHelper.GetReport(key) 
     If sFile <> "" Then 
      frame_preview.Attributes("src") = sFile 
     End If 
    End If 
End Sub 

Toutes les idées?

Répondre

1

Votre page doit contenir d'autres éléments qui l'empêchent de mettre à jour l'iframe. Si vous l'isolez dans un autre projet cela fonctionne. Je viens de créer un nouveau projet et l'ai testé. Ci-dessous les travaux.

HTML:

<iframe id="myFrame" runat="server" 
     src="http://dell.com" width="100%" height="600"> 

    Your browser doesn't support iframes 

</iframe> 

<asp:Button ID="myButton" runat="server" 
      Text="Change IFRAME Source" /> 

CodeBehind:

Protected Sub myButton_Click(sender As Object, 
          e As System.EventArgs) Handles myButton.Click 

    myFrame.Attributes("src") = "http://microsoft.com" 

End Sub 

Modifier par des commentaires indiquant OP utilise UpdatePanel

Dans ce cas, vous réglez simplement le UpdateMode sur votre UpdatePanel à Conditional puis dans votre CodeBehind, vous appelez la méthode .Update() du UpdatePanel comme ci-dessous.

HTML:

<asp:ScriptManager ID="ScriptManager1" runat="server" /> 

<p> 
    <strong>Today's Date:</strong> <%=Now.ToString()%> 
</p> 

<asp:UpdatePanel ID="myUpdatePanel" runat="server" UpdateMode="Conditional"> 
    <ContentTemplate> 

     <iframe id="myFrame" runat="server" 
       src="http://dell.com" width="100%" height="600"> 

      Your browser doesn't support iframes 

     </iframe> 

     <p> 
      <asp:Button ID="myButton" runat="server" 
         Text="Change IFRAME Source" /> 
     </p> 

    </ContentTemplate> 
</asp:UpdatePanel> 

CodeBehind:

Protected Sub myButton_Click(sender As Object, 
          e As System.EventArgs) Handles myButton.Click 

    myFrame.Attributes("src") = "http://microsoft.com" 
    myUpdatePanel.Update() 

End Sub 
+0

Je pense que vous confondez '' callback' avec postback'. GridViewCommandColumnCustomButton ne provoque pas de publication au clic, comme le ferait aspButton. –

+0

C'est toujours une publication partielle si elle est faite de manière asynchrone ou dites-vous que vous ne revenez jamais au serveur? Il doit y avoir un moyen de mettre à jour le client à partir du serveur si vous êtes à l'origine d'une publication partielle. Quelle méthode utilisez-vous? 'UpdatePanel's? –

+0

Vous avez raison, j'utilise 'UpdatePanel', mais j'ai oublié de définir un déclencheur pour cela. Comment coderiez-vous un déclencheur dans cette situation? –