GridView экспорт не возвращает данных при экспорте в файл Excel - PullRequest
1 голос
/ 07 февраля 2012

У меня возникли проблемы с экспортом GridView в Excel по какой-то причине.У меня есть две кнопки, одна из них - «Поиск», которая выполняет поиск, как только пользователь предоставил необходимую информацию.Другая кнопка - это Экспорт, который в основном обрабатывает экспорт вида сетки в Excel.

Моя проблема в том, что когда пользователь нажимает кнопку поиска и затем хочет экспортировать данные, чтобы преуспеть, ему нужно нажать кнопку «Экспорт».Все хорошо до этого момента, когда файл Excel просматривается, данные не экспортируются.Вот мой код для обеих кнопок:

Любая помощь будет благодарна, спасибо.

protected void search(object sender, EventArgs e)
{
    odbc.Open();
    ds = new DataSet();
    cmd = new OdbcCommand("SELECT XHLBCD AS LOCATION, XHLCST AS STATUS, XHEXUN AS EXCESS, XHSHUN AS SHORT, XHCNTD AS DATE_COUNTED FROM " +
                            "WM242BASD.XHCTRL00 WHERE XHCNTD BETWEEN '" + fromdate.Text + "' AND '" + todate.Text + "'", odbc);
    cmd.CommandType = CommandType.Text;
    cmd.Connection = odbc;
    oda = new OdbcDataAdapter(cmd);
    oda.Fill(ds);
    GridView1.DataSource = ds;
    GridView1.DataBind();
    odbc.Close();

}

protected void export_OnClick(object sender, EventArgs e)
{

    // Let's hide all unwanted stuffing
    GridView1.AllowPaging = false;
    GridView1.AllowSorting = false;

    // Let's bind data to GridView
    BindGrid();

    //Change the color back to white
    GridView1.HeaderRow.Style.Add("background-color", "#ffffff");

    //Apply color to the header
    GridView1.HeaderRow.Cells[0].Style.Add("background-color", "#e0e0e0");
    GridView1.HeaderRow.Cells[1].Style.Add("background-color", "#e0e0e0");
    GridView1.HeaderRow.Cells[2].Style.Add("background-color", "#e0e0e0");
    GridView1.HeaderRow.Cells[3].Style.Add("background-color", "#e0e0e0");
    GridView1.HeaderRow.Cells[4].Style.Add("background-color", "#e0e0e0");

    // Let's output the GridView
    Response.Clear();
    Response.ContentType = "application/vnd.xls";
    Response.AddHeader("content-disposition", "attachment;filename=" + reportid + ".xls");

    StringWriter swriter = new StringWriter();
    HtmlTextWriter hwriter = new HtmlTextWriter(swriter);

    GridView1.RenderControl(hwriter);


    Response.Write(swriter.ToString());
    Response.End();

}

private void BindGrid()
{
    GridView1.DataBind();
}

1 Ответ

2 голосов
/ 07 февраля 2012

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

Переместите код из метода поиска в метод привязки данных и вызовите метод из обоих обработчиков событий.

Также используйте параметры SQL, которые вы кодируете, широко открыты для атак SQL-инъекций.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...