【问题标题】:Get all the values of a dataGridTextboxColumn获取dataGridTextboxColumn的所有值
【发布时间】:2009-12-08 01:24:43
【问题描述】:

我有一个 dataGridView,它有一个名为 Date Due 的列,其类型为 System.DataTime。我想把这些日期放在一个月日历中。我必须遍历列吗?我必须投射它吗?

【问题讨论】:

  • 这是网络应用还是表单应用?我认为是表单(datagridviewtextboxcell)。

标签: c# monthcalendar datagridviewtextboxcell


【解决方案1】:

要从每一列获取日期是的,您必须遍历列中的所有行。当您将日期显示为文本时,您需要使用 DateTime.ParseDateTime.TryParse 方法进行解析。

编辑:- 假设这是一个表单应用程序。我添加了DataGridViewMonthCalendarButton。我能够从 gridview 中获取日期,并在月份 cal 中将所选日期加粗。

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();
}

【讨论】:

  • 没用。我已经有一个 DataSet 作为 DataGrid 的 DataSource。有没有更简单的方法?
  • 添加新行时,我还将使用MonthCalendar.UpdateBoldedDates() 方法。不需要按钮。
  • 那么你就忽略了DataTable的创建和绑定的东西。添加新行后,您可以处理该事件并从相应列获取数据。
  • 或者最好还是发布一些代码,以便我知道你的东西现在是什么以及如何。
猜你喜欢
  • 1970-01-01
  • 2021-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-15
  • 1970-01-01
  • 2016-04-05
相关资源
最近更新 更多