I am tasked to add a CSV export option to an HTML report I have in ASPX.
Data is in a DataTable and HTML is built manually (more control than with a DataGrid/GridView)
I added a hyperlink to the webpage as follows:
< asp:LinkButton ID="btnExport" runat="server" Width="114px">Export Report< /asp:LinkButton>
What I see is the link when pressed, does a PostBack to he same page. I want to call my ExportDataToCSV() below:
public bool ExportDataToCSV(DataTable oSourceTable, string sFileName, string sDelimiter, Boolean IsWriteColumnHeaders)
{
}
Questions: Is there a better way to do this than through a Postback?
If a Postback,
a. how do I pass the DataTable to the method call? (as ViewState is kinda wasteful and would have to be cast a DataTable - how do I do that?)
b. if DataTable is passed directly as a parameter (better than through HTTP IMO), how do I accomplish that from the LinkButton?
Hope I'm clear enough. Now back to battling with C# <g>
[UPDATE]: as I'm already looping through the DataSet when building an HTML table I could also build a CSV at the same time then pass it as a string and avoid passing a DataSet (makes it easier through PostBack?).
Drawbacks: It might be a large string. It is extra work done every time when they may only want to download a CSV copy of the HTML table every so often.
Thoughts?