在UpdatePanel
内我试图绑定到ListView
并将其内容导出到Excel。这些功能独立运行良好(我的“运行报告”按钮绑定ListView
,“导出到Excel”按钮使用EPPlus导出.xlsx文件)。为了让.xlsx导出工作,我必须为'导出到Excel'按钮创建一个<Triggers> Postback
。UpdatePanel方法不触发
我想'导出到Excel'按钮绑定ListView
并导出.xlsx。我添加了将ListView
绑定到导出方法的方法,但它似乎在跳过它。我认为我不了解PostBack的某些部分。
这里是<Trigger>
:
<Triggers>
<asp:PostBackTrigger ControlID="export" />
</Triggers>
这里是ListView
绑定:
public void runreport(object sender, EventArgs e)
{
reportlv.DataSource = null;
reportlv.DataBind();
bindreportlv();
elreportdiv.Visible = true;
}
这里是导出方法与runreport方法嵌入:
protected void export_Click(object sender, EventArgs e)
{
runreport(null, null);
ExcelPackage pck = new ExcelPackage();
ExcelWorksheet ws = pck.Workbook.Worksheets.Add("worksheet");
DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("Date", typeof(string)));
dt.Columns.Add(new DataColumn("Payee", typeof(string)));
dt.Columns.Add(new DataColumn("Amount", typeof(string)));
foreach (ListViewDataItem li in reportlv.Items)
{
if (li.ItemType == ListViewItemType.DataItem)
{
DataRow dr = dt.NewRow();
dr["Date"] = ((Label)li.FindControl("lbldate")).Text.ToString();
dr["Payee"] = ((Label)li.FindControl("lblpayee")).Text.ToString();
dr["Amount"] = ((Label)li.FindControl("lblamt")).Text.ToString();
dt.Rows.Add(dr);
}
}
ws.Cells["A1"].LoadFromDataTable(dt, true);
pck.SaveAs(Response.OutputStream);
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AddHeader("content-disposition", "attachment; filename=summary.xlsx");
Response.Flush();
Response.End();
}
这里是按钮:
<asp:Button runat="server" ID="run" OnClick="runreport" CssClass="button" Text="Run Report" />
<asp:Button runat="server" ID="export" OnClick="export_Click" CssClass="button" Text="Export to Excel" />
更新
这里是Page_Load方法:
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack)
{
runreport(null, null);
}
}
如果你正在做一个完整的回传,你确定你仍然有数据重新绑定到列表视图? – NoviceProgrammer
可能吗?我在Page_Load中添加了一个if(IsPostBack){runreport(null,null)},但这并没有解决问题。 – fcholmes
显示你的'Page_Load'方法。 –