Torna al Thread
DataColumn dc = new DataColumn(s);
dt.Columns.Add(dc);
int contRow=0; //MI CREO UN CONTATORE PER LE RIGHE ESISTENTI
//primo ciclo: per ogni mese dell'anno prescelto mi faccio restituire i giorni
for (int i = 1; i <= 12; i++)
{
int dayForMonth = Convert.ToInt32(((new DateTime(Convert.ToInt32(s), i, 1)).AddMonths(1)).AddDays(-1).Day
for (int x = 1; x <= dayForMonth; x++)
{
DateTime ndt2 = new DateTime(Convert.ToInt32(s), i, x);
if (Convert.ToInt32(ndt2.DayOfWeek) == 1)
{//ECCO I NUOVI CONTROLLI:
if (dt.Columns.Count-1==0)// SE NON ESISTONO COLONNE, CREO UNA RIGA
{
DataRow drw = dt.NewRow();
drw[0] = ndt2.ToString("M");
dt.Rows.Add(drw);
}
else //ESISTONO COLONNE
{
if (contRow < dt.Rows.Count)
//SE IL NUMERO DI RIGHE è INFERIORE A QUELLE ESISTENTI, AGGIUNGO SOLO I DATI ALLA NUOVA COLONNA
{
dt.Rows[contRow][dt.Columns.Count - 1] = ndt2.ToString("M");
//dt.Rows.Add(dt.Rows[contRow]);
contRow++;//AGGIORNO IL CONTATORE DI RIGHE ESISTENTI: UNA SPECIE DI CURSORE CHE SCENDE NEL DATATABLE
}
else
{//HO SUPERATO IL NUMERO DI RIGHE ESISTENTI: NE DEVO CRERARE UNA NUOVA
DataRow drw = dt.NewRow();
drw[dt.Columns.Count - 1] = ndt2.ToString("M");
dt.Rows.Add(drw);
//NON MI DEVO PREOCCUPARE DELLE COLONNE CON CELLE VUOTE: RESTERANNO TALI, SENZA ANDARE IN ERRORE
}
}
dt.AcceptChanges();
}
}
}