I am creating a GridView in a method like so:
GridView gridView = new GridView();
gridView.DataSource = reportData.Tables[0];
gridView.DataBind();
I am later exporting it to Excel and it works great. The columns are being auto-generated from my source data. I would like to change the DataFormatString property of some of the columns however after I databind and before I export to Excel. I can't seem to find the correct property to change. Can anybody point me in the right direction?
According to AutoGenerateColumns documentation:
This option provides a convenient way to display every field in the data source; however, you have limited control of how an automatically generated column field is displayed or behaves.
Note: Automatically generated bound column fields are not added to the Columns collection.
I tired looking for these AutoGeneratedField
s with no luck.
I can think of several options to achieve that (from worst to best):
RowDataBound
), this will give you access to the rows' cells, but isn't too convenient.Don't use AutoGeneratedField
Create these columns manually, as in:
BoundField dateField = new BoundField();
dateField.HeaderText = "Date";
dateField.DataField = "date";
dateField.DataFormatString = "{0:MMMM, yyyy}";
gridView.Columns.Add(dateField);
This options gives you bes control over titles.
List<Employee)
), and AutoGeneratedField
turns them into columns.And, as a last note, you should think about creating Excel files by using the API. It's not as easy, but HTML XLS files are less compatible with Excel 2007 - it displays a warning message that the format of the file is incompatible with the extension, and worse, the file brakes if it is opened and saves (can be Save As
though), making your files less user-friendly.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With