Этот вопрос был задан для дальнейшего обсуждения на this question.Gridview пустые строки при экспорте в CSV - SOLVED
Ниже приведена процедура, которую я использую для создания файла CSV. Все работает отлично, за исключением того, что я получаю только заголовки столбцов и строк.
protected void CSVReport_Click(object sender, EventArgs e)
{
Response.Clear();
Response.Buffer = true;
Response.AddHeader("content-disposition", "attachment;filename=PeopleReportTest.csv");
Response.Charset = "";
Response.ContentType = "text/csv";
Response.AddHeader("Pragma", "public");
GridView1.AllowSorting = false;
GridView1.AllowPaging = false;
GridView1.DataBind();
StringBuilder sb = new StringBuilder();
for (int k = 1; k < GridView1.Columns.Count; k++)
{
//add separator
sb.Append(GridView1.Columns[k].HeaderText + ',');
}
//append new line
sb.Append("\r\n");
for (int i = 0; i < GridView1.Rows.Count; i++)
{
for (int k = 1; k < GridView1.Columns.Count; k++)
{
//add separator
sb.Append(GridView1.Rows[i].Cells[k].Text + ',');
}
//append new line
sb.Append("\r\n");
}
Response.Output.Write(sb.ToString());
Response.Flush();
Response.End();
}
На осмотр, я могу видеть, что GridView1.Rows[i].Cells[k].Text
всегда возвращает пустое значение.
Таким образом, проблема может быть связана со структурой моего gridview. Я знаю, что код не работает, если у меня есть TemplateFields
, но у меня есть только один, и он установлен в невидимый.
Все остальные поля: DynamicFields
. Может ли это быть проблема?
Вот разметка:
<asp:GridView ID="GridView1" runat="server"
CssClass="table table-condensed borderless"
HeaderStyle-HorizontalAlign="Left"
AllowPaging="True" AllowSorting="True"
DataSourceID="GridDataSource"
DataKeyNames="PersonID" OnRowCommand="GridView1_RowCommand"
AutoGenerateColumns="false"
OnDataBound="GridView1_DataBound" PageSize="15">
<Columns>
<asp:templatefield itemstyle-width="0%" visible="false">
<itemtemplate>
<aspf:dynamichyperlink id="detailshyperlink" runat="server"
text="details" />
</itemtemplate>
</asp:templatefield>
<asp:DynamicField DataField="Name" HeaderText="Name"/>
<asp:DynamicField DataField="PersonCategory" HeaderText="Category" />
<asp:DynamicField DataField="PositionDescription" HeaderText="Position" />
<asp:DynamicField DataField="Description" HeaderText="Topic" />
<asp:DynamicField DataField="FellowsResponsibility" HeaderText="Responsibility" />
<asp:DynamicField DataField="PartnerSurname" HeaderText="Partner"/>
</Columns>
<PagerStyle CssClass="footer" />
<PagerTemplate>
<asp:GridViewPager runat="server" />
</PagerTemplate>
<EmptyDataTemplate>
There are currently no items in this table.
</EmptyDataTemplate>
</asp:GridView>
отличный @dura, рад, что вы нашли его по своему усмотрению. ура !!! Кроме того, вы можете пометить свой ответ как принятый. – Devjosh
Спасибо за помощь. Примите мой ответ, когда мне разрешат. –