Ever need to show something in a databound gridview that isn't in your datasource? Don't worry, relax, forget about that datasource. Just create that extra row dynamically.
Lets assume I have a GridView with 2 columns. The first column shows the items on an order, the second column shows the price of that item and the footer shows the order total. How would I inject a row that shows the tax?
Something like this in the RowDataBound EventHandler would do the trick:
decimal orderTotal = 0.0m;
decimal tax = 0.0m;
protected void gvOrderDetail_RowDataBound(object sender, GridViewRowEventArgs e)
{
//TODO: ...