Hello,
with reference to below article,
http://www.aspforums.net/Threads/150566/Export-GridView-with-TemplateField-and-hiding-the-HiddenField-column-to-CSV-using-C-in-ASPNet/
The export option is working fine when the gridview columns are not autogenrated.
But when I set autogeneratecolumns=true I get an empty csv file.
This is my Gridview code.
<asp:GridView runat="server" ID="grvTillReport" Width="100%"
EmptyDataText="No Records Found. Please try with different Parameters..."
CellPadding="4" ForeColor="#333333" GridLines="Both"
CssClass="table table-bordered" AllowPaging="true" PageSize="30"
OnPageIndexChanging="OnPaging" AllowSorting="True"
onrowdatabound="grvTillReport_RowDataBound" onsorting="grvTillReport_Sorting" Font-Size="Smaller">
<EditRowStyle BackColor="#2461BF" />
<EmptyDataRowStyle CssClass="alert alert-danger" Font-Bold="true" />
<PagerStyle CssClass="pagination-ys" HorizontalAlign="Center" />
<AlternatingRowStyle BackColor="White" />
<Columns>
<asp:TemplateField HeaderText="S.No">
<ItemTemplate>
<asp:Label ID="lblRowNumber" Text='<%# Container.DataItemIndex + 1 %>' runat="server" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="S.No" Visible="false">
<ItemTemplate>
<asp:Label runat="server" ID="lblSNo" Text='<%# Eval("s_no") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField Visible="false">
<ItemTemplate>
<asp:HiddenField runat="server" ID="hdnTransStatus" Value='<%# Eval("trans_status") %>' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Action" ItemStyle-HorizontalAlign="Center">
<ItemTemplate>
<asp:HyperLink runat="server" ID="hlnkCloseTill" Visible="false" CssClass="glyphicon glyphicon-pencil" NavigateUrl='<%# String.Format("~/Forms/edittill.aspx?s_no={0}",Encrypt(Eval("s_no").ToString()))%>'></asp:HyperLink>
<asp:Label runat="server" ID="lblStatusMsg" Visible="false"></asp:Label>
<asp:LinkButton runat="server" ID="lnkDelete" Visible="false" OnClick="lnkDelete_Click">
<span aria-hideen="true" class="glyphicon glyphicon-remove-sign"></span>
</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<RowStyle BackColor="#EFF3FB" />
<SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
<SortedAscendingCellStyle BackColor="#F5F7FB" />
<SortedAscendingHeaderStyle BackColor="#6D95E1" />
<SortedDescendingCellStyle BackColor="#E9EBEF" />
<SortedDescendingHeaderStyle BackColor="#4870BE" />
</asp:GridView>
And this is my export to CSV code,
protected void ExportToCSV(object sender, EventArgs e)
{
Response.Clear();
Response.Buffer = true;
Response.AddHeader("content-disposition", "attachment;filename=TillReport.csv");
Response.Charset = "";
Response.ContentType = "application/text";
grvTillReport.AllowPaging = false;
grvTillReport.Columns[0].HeaderText = "S.No";
grvTillReport.Columns[1].HeaderText = "";
grvTillReport.Columns[1].Visible = false;
grvTillReport.Columns[2].HeaderText = "";
grvTillReport.Columns[2].Visible = false;
grvTillReport.Columns[3].HeaderText = "";
grvTillReport.Columns[3].Visible = false;
StringBuilder Sb = new StringBuilder();
for (int k = 0; k < grvTillReport.Columns.Count; k++)
{
if (!string.IsNullOrEmpty(grvTillReport.Columns[k].HeaderText))
Sb.Append(grvTillReport.Columns[k].HeaderText + ',');
}
Sb.Append("\r\n");
for (int i = 0; i < grvTillReport.Rows.Count; i++)
{
if ((grvTillReport.Rows[i].FindControl("lblRowNumber") as Label) != null)
{
Sb.Append((grvTillReport.Rows[i].FindControl("lblRowNumber") as Label).Text + ',');
}
for (int k = 0; k < grvTillReport.Columns.Count; k++)
{
if (!string.IsNullOrEmpty(grvTillReport.Rows[i].Cells[k].Text))
{
Sb.Append(grvTillReport.Rows[i].Cells[k].Text + ',');
}
}
Sb.Append("\r\n");
}
Response.Output.Write(Sb.ToString());
Response.Flush();
Response.End();
}