【问题标题】:Export a GridView in an update panel to Excel and then refresh the grid - not working将更新面板中的 GridView 导出到 Excel,然后刷新网格 - 不起作用
【发布时间】:2011-09-09 19:46:40
【问题描述】:

我在更新面板中有一个网格视图。我可以使用 HTTP 响应将其导出到 excel 中,它会导出所需的数据并在弹出窗口中打开文件,一切正常。

但是,一旦数据被导出,我必须更新网格视图以指示这些数据已被导出。我验证了正确的数据设置到数据源并调用了数据绑定。但是excel导出并没有触发屏幕刷新。

如果我通过更改下拉菜单或其他方式触发刷新,我可以看到数据已更改。我尝试了 UpdatePanelID.Update() - 仍然是徒劳的。

那么如何在excel导出后触发gridview刷新呢?

提前致谢。

我的导出代码:

        var excelXml = GetExcelXml(dsInput, filename);
        response.Clear();
        response.AppendHeader("Content-Type", "application/vnd.ms-excel");
        response.AppendHeader("Content-disposition", "attachment; filename=" + filename);
        response.Write(excelXml);
        response.Flush();

protected void btnExport_Click(object sender, EventArgs e)
{
    try
    {

        if (list.Count() > 0)
        {


            ds.Tables.Add(dtForExport);
            ExcelHelper.ToExcel(ds, filename); //To Excel method is described above.
            LoadGridDetails();//Binds the new values

        }

    }
    catch (Exception ex)
    {
        lblStatus.Text = "Error Exporting to Excel";
    }
}//Screen is not refreshed after executing this line.

【问题讨论】:

  • 一些标记(aspx)和一些代码隐藏呢? :)
  • 我在后面添加了一些代码,看看是否有帮助。

标签: c# asp.net gridview updatepanel export-to-excel


【解决方案1】:

您所说的«弹出窗口»,在我看来,您是在谈论浏览器下载弹出窗口。 因此,在这种情况下,它不起作用,因为您已经执行了 Response.Clear 并且您不能再刷新您的网格。

我的建议是:你可以打开一个真正的弹出窗口,它的意思是:window.popup,这个弹出窗口将完成所有的响应工作,或者你也可以在你的“导出”按钮中放一些 java-script 来做两件事:执行回发以导出功能并等待 X 毫秒以调用某个隐藏按钮的单击,以进行第二次回发并执行刷新。

希望对你有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-05
    • 1970-01-01
    • 1970-01-01
    • 2012-09-10
    相关资源
    最近更新 更多