2013-04-17 3 views
0

Я ищу способ загрузки PDF-файла в iFrame всякий раз, когда обратный вызов запускается GridViewCommandColumnCustomButton в ASPxGridView. Причина этого в том, что мне нужен другой PDF-файл, загружаемый в зависимости от того, какая строка на ASPxGridView нажата.Загрузить iFrame на обратном вызове страницы

Ниже, как я (неудачно) обработки обратного вызова в данный момент:

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 

Любые идеи?

ответ

1

На вашей странице должно быть что-то еще, что препятствует обновлению iframe. Если вы изолируете его в другом проекте, он работает. Я только что создал новый проект и протестировал его. Ниже работает.

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 

Редактировать в комментариях, заявив OP использует UpdatePanel

В этом случае, вы просто установите UpdateMode на вашем UpdatePanel до Conditional, а затем в вашем CodeBehind вы вызываете .Update() метод UpdatePanel, как показано ниже.

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

Я думаю, что вы путаете '' callback' с postback'. GridViewCommandColumnCustomButton не вызывает обратную передачу при нажатии, например aspButton. –

+0

Это еще частичная обратная передача, если она выполняется асинхронно или вы говорите, что никогда не возвращаетесь на сервер? Должен быть способ обновления клиента с сервера, если вы вызываете частичную обратную передачу. Какой метод вы используете? 'UpdatePanel's? –

+0

Вы правы, я использую 'UpdatePanel', но забыл установить для него триггер. Как бы вы закодировали триггер в этой ситуации? –