«Невозможно оценить выражение, потому что код оптимизирован или собственный фрейм находится на вершине стека» при экспорте сетки в Excel - PullRequest
1 голос
/ 22 мая 2019

Получение ошибки при экспорте выбранных строк сетки в Excel.ошибка: невозможно вычислить выражение, потому что код оптимизирован или собственный фрейм находится на вершине стека.

На самом деле я хочу экспортировать выбранные строки из сетки в Excel, чтобы пользователь мог легко загрузить выбранныйЗаписи, пожалуйста, используйте код для экспорта в Excel метод Onclick.

protected void btnExportExcel_Click(object sender, EventArgs e)
    {
                bool isSelected = false;
                foreach (GridViewRow i in gvDistrictSchoolReport.Rows)
                {
                    CheckBox cb = (CheckBox)i.FindControl("Chkbox");
                    if (cb != null && cb.Checked)
                    {
                        isSelected = true;
                        break;
                    }
                }
                if (isSelected)
                {
                    GridView gvExport = gvDistrictSchoolReport;
                    // this below line for not export checkbox to excel file
                    gvExport.Columns[0].Visible = false;
                    foreach (GridViewRow i in gvDistrictSchoolReport.Rows)
                    {
                        gvExport.Rows[i.RowIndex].Visible = false;
                        CheckBox cb = (CheckBox)i.FindControl("Chkbox");
                        if (cb != null && cb.Checked)
                        {
                            gvExport.Rows[i.RowIndex].Visible = true;
                        }
                    }
                    try
                    {
                        Response.Clear();
                        Response.Buffer = true;
                        Response.AddHeader("content-disposition", "attachment;filename=ExportGridData.xls");
                        Response.Charset = "";
                        Response.ContentType = "application/vnd.ms-excel";
                        StringWriter sw = new StringWriter();
                        HtmlTextWriter htW = new HtmlTextWriter(sw);
                        gvExport.RenderControl(htW);
                        Response.Output.Write(sw.ToString());
                        Response.Flush();
                        Response.End();

                    }
                    catch(Exception ex)
                    {
                        Console.WriteLine(ex);
                    }

                }
            }

1 Ответ

2 голосов
/ 22 мая 2019

Если вы используете панель обновления, используйте триггеры PostBack, как это

<asp:UpdatePanel ID="up1" runat="server">
        <Triggers>
        <asp:PostBackTrigger ControlID="gvDistrictSchoolReport" /> -- for grid
             <asp:PostBackTrigger ControlID="Button6" />  -- for export to excel button
    </Triggers>

до сетки. Надеюсь, что это будет работать

...