首页 > 解决方案 > 从后面的代码更改按钮可见性失败

问题描述

我有一个图像按钮,可以从数据库中提取数据并使用 EPPlus 将其保存到 Excel 文件中。当用户单击按钮时,将触发一个脚本以使用 OnClientClick 隐藏该按钮,并且在保存文件后将重新出现一个按钮。最初的隐藏部分正在工作,但使其再次可见是行不通的。

但是,后来我发现如果我将函数 DumpToExcel (将数据表传输到 Excel 的函数)注释掉,按钮会再次显示。

谁能告诉我是什么导致了函数内部的问题?谢谢!

转储到Excel

private void DumpToExcel(DataSet dsReorder, DataSet dsShipment)
{
    try
    {
        using (ExcelPackage pck = new ExcelPackage())
        {
            List<string> dateColumns = new List<string>()
            {
                "LoadingDt",
                "ETAPortDt",
                "ROGDate",
                "DateRecd",
                "ExpectedShipDt",
                "LoadingDt",
                "RequestDate",
                "ShipDate",
                "PromiseDate"
            };

            ExcelWorksheet ws1 = pck.Workbook.Worksheets.Add(dsReorder.Tables[0].TableName);
            ws1.Cells["A1"].LoadFromDataTable(dsReorder.Tables[0], true);
            using (ExcelRange rng = ws1.Cells["A1:AG1"])
            {
                rng.Style.Font.Bold = true;
            }
            ExcelWorksheet ws2 = pck.Workbook.Worksheets.Add(dsShipment.Tables[0].TableName);
            ws2.Cells["A1"].LoadFromDataTable(dsShipment.Tables[0], true);
            FormatWorksheetData(dateColumns, dsShipment.Tables[0], ws2);
            using (ExcelRange rng = ws2.Cells["A1:AG1"])
            {
                rng.Style.Font.Bold = true;
            }
            ExcelWorksheet ws3 = pck.Workbook.Worksheets.Add(dsShipment.Tables[1].TableName);
            ws3.Cells["A1"].LoadFromDataTable(dsShipment.Tables[1], true);
            FormatWorksheetData(dateColumns, dsShipment.Tables[1], ws3);
            using (ExcelRange rng = ws3.Cells["A1:AG1"])
            {
                rng.Style.Font.Bold = true;
            }
            ExcelWorksheet ws4 = pck.Workbook.Worksheets.Add(dsShipment.Tables[2].TableName);
            ws4.Cells["A1"].LoadFromDataTable(dsShipment.Tables[2], true);
            FormatWorksheetData(dateColumns, dsShipment.Tables[2], ws4);
            using (ExcelRange rng = ws4.Cells["A1:AG1"])
            {
                rng.Style.Font.Bold = true;
            }

            string fileName = "RP_DataPull.xlsx";
            Response.Clear();
            Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
            Response.AddHeader("content-disposition", "attachment;filename=" + fileName);
            Response.BinaryWrite(pck.GetAsByteArray());
        }
    }
    catch (Exception ex)
    {
        Response.Write(ex.Message);
    }
}

btn_OnClick

protected void ibtnPullData_Click(object sender, ImageClickEventArgs e)
{
    //Acquire "DataTable"
    string cnAPStr = System.Configuration.ConfigurationManager.ConnectionStrings["conAP_SQLWeb"].ConnectionString; ;
    string queryReorder = "exec uspDataPull_ReorderPointInfo";
    string queryShipment = "exec uspDataPull_ShipmentsInfo";
    SqlConnection cn = new SqlConnection(cnAPStr);

    //ReorderPointInfo
    SqlDataAdapter daReorder = new SqlDataAdapter(queryReorder, cn);
    DataSet dsReorder = new DataSet();
    daReorder.Fill(dsReorder);
    dsReorder.Tables[0].TableName = "Reorder Point";

    //ShipmentsInfo
    SqlDataAdapter daShipment = new SqlDataAdapter(queryShipment, cn);
    DataSet dsShipment = new DataSet();
    daShipment.Fill(dsShipment);
    dsShipment.Tables[0].TableName = "Items in Shipment";
    dsShipment.Tables[1].TableName = "Open POs";
    dsShipment.Tables[2].TableName = "Open Sos";

    this.ibtnPullData.Style.Add("display", "inherit");

    DumpToExcel(dsReorder, dsShipment);
}

标签: c#asp.netepplus

解决方案


推荐阅读