Question

J'ai un datagridview qui a une colonne appelée Date de qui est de type System.DataTime. Je veux mettre ces dates dans un MonthCalendar. Est-ce que je dois itérer throught la colonne? Dois-je jeter?

Était-ce utile?

La solution

pour obtenir la date de chaque colonne OUI vous devez parcourir toutes les lignes de la colonne. Comme vous affichiez la date sous forme de texte, vous devrez analyser en utilisant des méthodes de DateTime.Parse ou DateTime.TryParse.

EDIT: - en supposant que c'est une application de formulaires. J'ai ajouté un DataGridView, un MonthCalendar et un Button. Je suis en mesure d'obtenir les dates de gridview et gras les dates sélectionnées en cal mois.

public Form2()
{
    InitializeComponent();

    CreateData();
}

private void CreateData()
{
    var dtb = new DataTable();
    dtb.Columns.Add("Column1");
    dtb.Columns.Add("Column2");
    dtb.Columns.Add("Column3");

    var dt = DateTime.Now;
    var rand = new Random();

    for (var i = 0; i < 10; i++)
    {
        var r = dtb.NewRow();

        r.ItemArray = new object[] {dt.ToString("ddd"), dt.ToString("MMM"), dt};
        dt = dt.AddDays(rand.Next(30));

        dtb.Rows.Add(r);
    }

    dataGridView1.DataSource = dtb;
}

private void button1_Click(object sender, EventArgs e)
{
    var bds = new List<DateTime>();
    foreach (DataGridViewRow row in dataGridView1.Rows)
    {
        DateTime dt;
        var b = DateTime.TryParse(row.Cells[row.Cells.Count - 1].Value+"", out dt);
        if(!b) continue;

        bds.Add(dt);
    }

    cal.BoldedDates = bds.ToArray();
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top