【发布时间】:2018-03-07 15:54:05
【问题描述】:
我有一个试图导出到 csv 文件的 Gridview,但我没有得到任何行,只是列名。
<div style ="height:600px; width:auto; overflow:auto;">
<p class="padding">
<asp:GridView ID="GridViewBICARB" runat="server"
AutoGenerateColumns="false"
Caption="Bicarb Operator Checks"
CaptionAlign="Top"
EmptyDataText="Data Not Available"
Width="100%"
AllowPaging="false"
AllowSorting="true"
ShowHeader="true" >
<Columns>
<asp:BoundField DataField="FeedCheck" HeaderText="FeedCheck" />
<asp:BoundField DataField="VisualCheck" HeaderText="VisualCheck" />
</Columns>
<RowStyle CssClass="altrow" />
</asp:GridView>
</p>
</div>
这是我的 C#
protected void btnExportReport_Click(object sender, EventArgs e)
{
Response.Clear();
Response.Buffer = true;
Response.AddHeader("content-disposition", "attachment;filename=test.csv");
Response.Charset = "";
Response.ContentType = "text/csv";
GridViewBICARB.AllowSorting = false;
GridViewBICARB.AllowPaging = false;
GridViewBICARB.DataBind();
StringBuilder sb = new StringBuilder();
for (int k = 0; k < GridViewBICARB.Columns.Count; k++)
{
//add separator
sb.Append(GridViewBICARB.Columns[k].HeaderText + ',');
}
//append new line
sb.Append("\r\n");
for (int i = 0; i < GridViewBICARB.Rows.Count; i++)
{
for (int k = 0; k < GridViewBICARB.Columns.Count; k++)
{
//add separator
sb.Append(GridViewBICARB.Rows[i].Cells[k].Text + ',');
}
//append new line
sb.Append("\r\n");
}
Response.Output.Write(sb.ToString());
Response.Flush();
Response.End();
}
我的输出只是列名。
FeedCheck、VisualCheck、
我已尝试按照另一个问题中的建议删除以下内容。
GridViewBICARB.AllowPaging = false; GridViewBICARB.DataBind();
但没有帮助....
【问题讨论】:
-
为什么要导出 GridView 而不是源数据?
-
您能否指出我如何从源代码导出的正确方向? @VDWWD
-
您为可用于导出的 GridView 设置的相同源。但最好使用专门的库进行导出,例如joshclose.github.io/CsvHelper
-
@VDWWD 无论如何都要在gridview之外做?