Я выписал приведенный ниже код для обработки загрузки файла, который должен произойти в Gridview.RowCommand. Он работает в других местах, где я его использовал (linkbutton вне gridview или аналогичного элемента управления).Загрузить файл из gridview rowcommand
Этот Gridview находится внутри UpdatePanel.
Protected Sub gvBikeInsurance_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles gvBikeInsurance.RowDataBound
If e.Row.RowType = DataControlRowType.DataRow Then
Dim ibtnExportToPDF As ImageButton = TryCast(e.Row.FindControl("ibtnExportToPDF"), ImageButton)
ScriptManager.GetCurrent(Me).RegisterPostBackControl(ibtnExportToPDF)
Dim btnDelete As LinkButton = TryCast(e.Row.Cells(e.Row.Cells.Count - 1).Controls(0), LinkButton)
btnDelete.OnClientClick = "return confirm('Are you sure you want to delete this insurance item');"
End If
End Sub
Protected Sub gvBikeInsurance_RowCommand(sender As Object, e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles gvBikeInsurance.RowCommand
Select Case e.CommandName
Case "PDFExport"
exportPolicy(e.CommandArgument)
End Select
End Sub
Private Sub exportPolicy(ByVal BikeInsuranceID As Integer)
Dim args As New List(Of MySqlParameter)
args.Add(New MySqlParameter("xbikeinsuranceid", MySqlDbType.Int32))
args(args.Count - 1).Value = BikeInsuranceID
Dim dr As MySqlDataReader = db.execDB("InsuranceFiles_Select", CommandType.StoredProcedure, args.ToArray(), GeneralFunctions.ReturnType.DataReader, False)
Dim output() As Byte
If dr.HasRows Then
dr.Read()
output = dr("filedata")
End If
dr.Close()
Dim outputstr As String = Text.Encoding.ASCII.GetString(output)
Response.Clear()
Response.ClearHeaders()
Response.ContentType = "application/pdf"
Response.AddHeader("Content-Disposition", String.Format("attachment;filename={0}", "Policy Schedule.pdf"))
HtmlToPdf.ConvertHtml(outputstr, Response.OutputStream)
Response.End()
End Sub
Система фиксирует информацию пользователя из формы и пишет HTML-код с ней. Этот HTML-код используется для создания PDF-файла, который затем должен автоматически загружаться.
Проблема в том, что файл, похоже, не загружается, если я не запускаю его через шаг за шагом через отладчик. Стандартное исполнение просто отображает содержимое UpdateProgress, которое исчезает через некоторое время.
С кодом здесь что-то не так? В частности, в процедурах RowDataBound и RowCommand и в генерации ответа.
Любая помощь будет принята с благодарностью.
EDIT
Просто заметил эту ошибку в консоли Chrome:
Uncaught Sys.WebForms.PageRequestManagerParserErrorException: Sys.WebForms.PageRequestManagerParserErrorException: Сообщение, полученное от сервера не может быть проанализировано.
слишком ситуационный? – Ortund