2013-10-08 106 views
0

UpdatePanel内我试图绑定到ListView并将其内容导出到Excel。这些功能独立运行良好(我的“运行报告”按钮绑定ListView,“导出到Excel”按钮使用EPPlus导出.xlsx文件)。为了让.xlsx导出工作,我必须为'导出到Excel'按钮创建一个<Triggers> PostbackUpdatePanel方法不触发

我想'导出到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); 
    } 
} 
+0

如果你正在做一个完整的回传,你确定你仍然有数据重新绑定到列表视图? – NoviceProgrammer

+0

可能吗?我在Page_Load中添加了一个if(IsPostBack){runreport(null,null)},但这并没有解决问题。 – fcholmes

+0

显示你的'Page_Load'方法。 –

回答

0

<Triggers> <asp:PostBackTrigger ControlID="export" onclick ="CLick" /> </Triggers>

+0

onclick不是asp的有效属性:PostBackTrigger – fcholmes

+0

啊,明白了。 EventName是AsyncPostBackTrigger的属性,而不是PostBackTrigger。 – fcholmes

+0

vippz

相关问题