Я беру данные расписания компании из веб-API и форматирую данные, чтобы их можно было аккуратно отобразить на локальном сайте, а также можно было экспортировать в шаблон Excel для распространения по всей компании. Мы добавили кнопку в нижней части сайта для отображения расписания на предыдущие недели и еще одну для экспорта данных в Excel. При нажатии кнопки «Предыдущая неделя» эта же таблица Gridview1 заполняется данными за последние недели. Но когда я нажимаю кнопку экспорта, он экспортирует данные за текущую неделю в Excel.
Вот часть моего кода, дайте мне знать, что еще мне нужно опубликовать для помощи.
Таблица данных устанавливается при загрузке страницы в gridview:
protected void Page_Load(object sender, EventArgs e)
{
// ..... bunch of code above to call web API for date range and format table....
DataView view = table.AsDataView();
view.Sort = "Sort ASC";
GridView1.DataSource = view;
GridView1.DataBind();
if (GridView1.Columns.Count > 0)
GridView1.Columns[8].Visible = false;
else
{
GridView1.HeaderRow.Cells[8].Visible = false;
foreach (GridViewRow gvr in GridView1.Rows)
{
gvr.Cells[8].Visible = false;
}
}
, и gridview извлекается в таблицу данных и отправляется в электронную таблицу Excel
protected void ExportExcel(object sender, EventArgs e)
{
DataTable dt = new DataTable("Resident Schedule");
foreach (TableCell cell in GridView1.HeaderRow.Cells)
{
dt.Columns.Add(cell.Text);
}
foreach (GridViewRow row in GridView1.Rows)
{
dt.Rows.Add();
for (int i = 0; i < row.Cells.Count; i++)
{
dt.Rows[dt.Rows.Count - 1][i] = row.Cells[i].Text;
}
}
dt.Columns.Remove("Rotation");
dt.Columns.Remove("Sort");
using (XLWorkbook wb = new XLWorkbook(@"C:\template.xlsx"))
{
IXLWorksheet ws = wb.Worksheet("Resident Schedule");
var rangeWithStrings = ws.Cell(5, 2).InsertTable(dt.AsEnumerable(), false);
// ..... bunch of code below
теперь у меня есть метод нажатия кнопки, который получает вызывается для загрузки предыдущей недели в GridView:
protected void PreviousWeek(object sender, EventArgs e)
{
// ..... bunch of code above to pull and sort last weeks schedule....
DataView view = table.AsDataView();
view.Sort = "Sort ASC";
GridView1.DataSource = view;
GridView1.DataBind();
if (GridView1.Columns.Count > 0)
GridView1.Columns[8].Visible = false;
else
{
GridView1.HeaderRow.Cells[8].Visible = false;
foreach (GridViewRow gvr in GridView1.Rows)
{
gvr.Cells[8].Visible = false;
}
}
Итак, мой вопрос: если нажатие кнопки повторно заполняет данные GridView1, почему метод ExportExcel возвращается к данным загрузки страницы?