Please refer this link you will understand the AutoGenerateColumn property.
http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.autogeneratecolumns.aspx[
^]
When you set AutoGenerateColumn="true" :
AutoGeneratedField object is automatically created for each field in the data source. Each field is then displayed as a column in the GridView control in the order that the fields appear in the data source.
When you creating column dynamically(as you created) you have to set AutoGenerateColumn="false".