// Instantiate objects Ds = new DataSet(); Dt = new DataTable(); for (i=0; i<numColumnas; i++) { Dc = new DataColumn(); Dc.ColumnName = "Col_" + (i).ToString(); Dc.Caption = "x " + (i).ToString(); Dc.DataType = System.Type.GetType("System.String"); Dt.Columns.Add(Dc); ... } // Add tables to DataSet Ds.Tables.Add(Dt); // Assign to grid dgLista.DataSource = Ds; dgLista.DataMember = Ds.Tables[0].TableName; ...The trouble is, the caption remains the same as the column name, for example, "Col_1", when I expect "x 1".