1

GridViewクエリ文字列を取得してページにを作成する関数を作成しました.aspx。これは正常に機能します。csv空のファイルを返す関数へのエクスポートがあります。自動ツールを作成しSQLDataSourceて使用したときに、この機能を問題なく使用しました。GridView関数へのエクスポートは、Webページcsvのダイナミックからデータを取得しているのではないと思いますgridview。どこを間違えたのかわかりません。の情報を適切に返さない場合、関数が不良であると思われますGridView

protected void Page_Load(object sender, EventArgs e)
{
    btnBack.Click += new EventHandler(btnBack_Click);
    btnCSVDownload.Click += new EventHandler(btnCSVDownload_Click);

    lblLabel.Text = "some text";

    string selQuery = "SELECT * FROM Employees";

    SqlSelect(selQuery);
}

public string SqlSelect(string selStatement)
{
    lblSelectStatement.Text = selStatement;

    SqlConnection MyConnection = new SqlConnection();
    MyConnection.ConnectionString = ConfigurationManager.ConnectionStrings["datasource"].ConnectionString;
    SqlCommand MyCommand = new SqlCommand();
    MyCommand.CommandText = selStatement;
    MyCommand.CommandType = CommandType.Text;
    MyCommand.Connection = MyConnection;
    DataTable MyTable = new DataTable();
    SqlDataAdapter MyAdapter = new SqlDataAdapter();
    MyAdapter.SelectCommand = MyCommand;
    MyAdapter.Fill(MyTable);
    GridView1.DataSource = MyTable.DefaultView;
    GridView1.DataBind();
    MyAdapter.Dispose();
    MyCommand.Dispose();
    MyConnection.Dispose();

    return lblSelectStatement.Text;
}

protected void btnCSVDownload_Click(object sender, EventArgs e)
{  
    ExportToCsv(GridView1);
}

public void ExportToCsv(GridView grv)
{
    Response.Clear();
    Response.Buffer = true;
    Response.AddHeader("content-disposition",
    "attachment;filename=export.csv");
    Response.Charset = "";
    Response.ContentType = "application/text";

    grv.AllowPaging = false;
    grv.DataBind(); 

    StringBuilder sb = new StringBuilder();
    for (int k = 0; k < grv.Columns.Count; k++)
    {
        sb.Append(grv.Columns[k].HeaderText + ','); //add separator
    }
    sb.Append("\r\n"); //append new line
    for (int i = 0; i < grv.Rows.Count; i++)
    {
        for (int k = 0; k < grv.Columns.Count; k++)
        {
            grv.Rows[i].Cells[k].Text = ('"' + grv.Rows[i].Cells[k].Text + '"'); //add separator
            sb.Append(grv.Rows[i].Cells[k].Text + ',');
        }
        sb.Append("\r\n"); //append new line
    }
    Response.Output.Write(sb.ToString());
    Response.Flush();
    Response.End();
}
4

1 に答える 1

0

gridview フィールドが自動生成されておらず、バインドされたフィールドであることを確認してください。

于 2013-02-14T14:13:58.560 に答える