2009-12-08 75 views
0

我有一個dataGridView,其中有一個名爲Date Due的列,該列的類型爲System.DataTime。我想把這些日期放在一個月的日曆中。我必須遍歷列嗎?我必須施放它嗎?獲取dataGridTextboxColumn的所有值

+0

這是網站或表單應用程序嗎?我認爲它是窗體(datagridviewtextboxcell)。 – TheVillageIdiot 2009-12-08 06:37:06

+0

是的。這是一個winforms應用程序。 – 2009-12-08 12:37:16

回答

1

從每列獲取日期是的,你必須遍歷列中的所有行。由於您將文本顯示爲文本,因此需要使用DateTime.ParseDateTime.TryParse方法進行解析。

編輯: - 假設這是一個表單應用程序。我加了一個DataGridView,一個MonthCalendar和一個Button。我能夠從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(); 
} 
+0

沒有工作。我已經有了一個DataSet作爲DataGrid的DataSource。有更容易的方法嗎? – 2009-12-09 01:41:13

+0

當添加新行時,我還將使用'MonthCalendar.UpdateBoldedDates()'方法。不需要按鈕。 – 2009-12-09 01:48:42

+0

然後你忽略創建'DataTable'和綁定的東西。當添加新行時,您可以處理該事件並從相應列中獲取數據。 – TheVillageIdiot 2009-12-09 02:22:25