如何将数据从GridView导出到.txt

时间:2018-04-12 14:33:05

标签: c# asp.net

我正在开发一个C#asp.net项目,似乎无法将“从网格视图导出到.txt文件”工作。

protected void ExportGridToText() {
    BindGridView();
    Response.Clear();
    Response.Buffer = true;
    Response.Charset = "";
    StringBuilder Rowbind = new StringBuilder();
    Response.ContentType = "application/text";
    Response.AddHeader("Content-Disposition", "attachment;filename=GlogData.txt");
    Response.ContentEncoding = System.Text.Encoding.Unicode;
    Response.BinaryWrite(System.Text.Encoding.Unicode.GetPreamble());
    Response.Cache.SetCacheability(HttpCacheability.NoCache);
    gvLog.DataBind();



    for (int i = 2; i < gvLog.Columns.Count; i++)
    {

        Rowbind.Append("\"" + gvLog.Columns[i].HeaderText + "\"" + ',');
    }

    Rowbind.Append("\n");
    for (int j = 0; j < gvLog.Rows.Count; j++)
    {
        for (int k = 0; k < gvLog.Columns.Count; k++)
        {

            Rowbind.Append("\"" + gvLog.Rows[j].Cells[k].Text + "\"" + ',');
            Rowbind.Replace("&lt;", "<");
            Rowbind.Replace("&gt;", ">");
        }

        Rowbind.Append("\n");
    }


    gvLog.AllowPaging = false;
    Response.Output.Write(Rowbind.ToString());
    Response.Flush();
    Response.End();

}

Evrytime我运行代码时收到错误消息:

Sys.WebForms.PageRequestManagerParserErrorException:无法解析从服务器收到的消息

为什么它会给我这个错误?

我该如何解决?

是否有可能从源获取数据...这是在填充GridView的get按钮下:

protected void GetLogBtn_Click(object sender, EventArgs e)
    {

        string sBeginDate = BeginDate.Text;
        string sEndDate = EndDate.Text;
        JObject vResultJson = new JObject();
        FKWebCmdTrans cmdTrans = new FKWebCmdTrans();
        DateTime dtBegin, dtEnd;
        if (sBeginDate.Length > 0)
        {
            try
            {
                dtBegin = Convert.ToDateTime(sBeginDate);
                sBeginDate = FKWebTools.GetFKTimeString14(dtBegin);
                vResultJson.Add("begin_time", sBeginDate);

            }
            catch
            {

                BeginDate.Text = "";
            }
        }

        if (sEndDate.Length > 0)
        {
            try
            {
                dtEnd = Convert.ToDateTime(sEndDate);
                sEndDate = FKWebTools.GetFKTimeString14(dtEnd);
                vResultJson.Add("end_time", sEndDate);

            }
            catch
            {

                EndDate.Text = "";
            }
        }

        try
        {
            string sFinal = vResultJson.ToString(Formatting.None);
            byte[] strParam = new byte[0];
            cmdTrans.CreateBSCommBufferFromString(sFinal, out strParam);
            mTransIdTxt.Text = FKWebTools.MakeCmd(msqlConn, "GET_LOG_DATA", mDevId, strParam);
            Session["operation"] = GET_LOG_DATA;
            GetLogBtn.Enabled = false;
            ClearBtn.Enabled = false;
             Timer.Enabled = true;
        }
        catch (Exception ex)
        {
            StatusTxt.Text = "Fail! Get Log Data! " + ex.ToString();
        }

    }

这是在BindGridView:

private void BindGridView()
    {
           try
        {

            string mTransid = mTransIdTxt.Text;

            string strSelectCmd = "SELECT COUNT(*) FROM tbl_fkcmd_trans_cmd_result_log_data where trans_id = '" + mTransid + "'";
            SqlCommand sqlCmd = new SqlCommand(strSelectCmd, msqlConn);
            SqlDataReader sqlReader = sqlCmd.ExecuteReader();
            if (sqlReader.HasRows)
            {
                if (sqlReader.Read())
                    nCount = sqlReader.GetInt32(0);
             }
             sqlReader.Close();
             sqlCmd.Dispose();

            {
                  DataSet dsLog = new DataSet();


                strSelectCmd = "SELECT * FROM tbl_fkcmd_trans_cmd_result_log_data where trans_id = '" + mTransid + "'";
                SqlDataAdapter da = new SqlDataAdapter(strSelectCmd, msqlConn);
               // conn.Open();
                da.Fill(dsLog, "tbl_fkcmd_trans_cmd_result_log_data");

                DataView dvLog = dsLog.Tables["tbl_fkcmd_trans_cmd_result_log_data"].DefaultView;

                gvLog.DataSource = dvLog;
                gvLog.DataBind();

                StatusTxt.Text = "       Total Count : " + Convert.ToString(nCount) + "&nbsp;&nbsp;&nbsp; Current Time :" + DateTime.Now.ToString("HH:mm:ss tt");
            }
        }
        catch (Exception ex)
        {
            StatusTxt.Text = ex.ToString();
        }

    }

我希望这会有所帮助

提前致谢

1 个答案:

答案 0 :(得分:0)

以下代码主要用于Excel ...但是它成功地将gridview转换为.txt文件只需要一些解决方法..

operator=(C&& rhs)