Pergunta

Eu preciso gerar uma folha de Excel durante a execução em um evento ItemCommand_click em um GridView e transferir o arquivo e, em seguida, re-ligar a GridView com a mudança de status.

Como redirecionar a resposta com a transferência de arquivo, Como eu poderia atualizar o GridView?

Foi útil?

Solução

Eu estava olhando para fazer algo muito semelhante sobre a mudança de índice selecionado nas linhas para a saída de serviços devem reportar como um PDF. Eu só foi capaz de chegar a este trabalho com um response.redirect para outra página que lidou com a saída do arquivo. Parece que o problema torna-se realmente a religação da grelha após a mudança de status, se você fizer um response.redirect, você não pode tocar sua grade ...

Dê uma olhada neste código. Eu encontrei-o na encosia.com . Parece que você pode ser capaz de usar o iFrame para sua saída, e então você pode usar uma chamada de JavaScript para postback da página para religar a rede talvez.

<html>
<body>
<form id="form1" runat="server">
<asp:ScriptManager runat="server" />
<script language="javascript">
  // Get a PageRequestManager reference.
  var prm = Sys.WebForms.PageRequestManager.getInstance();

  // Hook the _initializeRequest event and add our own handler.
  prm.add_initializeRequest(InitializeRequest);

  function InitializeRequest(sender, args)
  {
    // Check to be sure this async postback is actually 
    //   requesting the file download.
    if (sender._postBackSettings.sourceElement.id == "DownloadFile")
    {
      // Create an IFRAME.
      var iframe = document.createElement("iframe");

      // Get the desired region from the dropdown.
      var region = $get("Region").value;

      // Point the IFRAME to GenerateFile, with the
      //   desired region as a querystring argument.
      iframe.src = "GenerateFile.aspx?region=" + region;

      // This makes the IFRAME invisible to the user.
      iframe.style.display = "none";

      // Add the IFRAME to the page.  This will trigger
      //   a request to GenerateFile now.
      document.body.appendChild(iframe); 
    }
  }
</script>
<asp:UpdatePanel runat="server">
  <ContentTemplate>
    <asp:DropDownList runat="server" ID="Region">
      <asp:ListItem Value="N">North Region</asp:ListItem>
      <asp:ListItem Value="W">West Region</asp:ListItem>
      <asp:ListItem Value="SE">Southeast Region</asp:ListItem>
    </asp:DropDownList>
    <asp:Button runat="server" ID="DownloadFile" Text="Generate Report" />
  </ContentTemplate>
</asp:UpdatePanel>
</form>
</body>
</html>

A página que manipula o download ...

protected void Page_Load(object sender, EventArgs e)
{
  string FileResponse;
  string Region = Request.QueryString["Region"];

  // Code here to fill FileResponse with the 
  //  appropriate data based on the selected Region.

  Response.AddHeader("Content-disposition", "attachment; filename=report.csv");
  Response.ContentType = "application/octet-stream";
  Response.Write(FileResponse);
  Response.End();
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top