2011年3月31日 星期四

dataGridView增加一個計算年齡欄位

//先在dataGridView內加入年齡欄位(非由資料庫繫結)
DataGridViewColumn colAge = new DataGridViewTextBoxColumn();
dataGridView1.Columns.Insert(9, colAge);
colAge.AutoSizeMode = DataGridViewAutoSizeColumnMode.ColumnHeader;
colAge.HeaderText = "年齡";
colAge.Name = "年齡";

CellAge();  //引用下面的方法






void CellAge()
{
        try
        {
                for (int i = 0; i < dataGridView1.RowCount; i++)
                {
                    int m_Y1 = DateTime.Parse(dataGridView1.Rows[i].Cells["Birthday"].Value.ToString()).Year;
                    int m_Y2 = DateTime.Now.Year;
                    int m_age = m_Y2 - m_Y1;

                    dataGridView1.Rows[i].Cells[9].Value = m_age.ToString();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "例外資訊");
            }
}


發現錯誤!!重新Load就會出現錯誤訊息了...
錯誤訊息:字串無法辨認為有效的DateTime。索引0的起點有一個未知的文字


解決:
 dataGridView1.Rows[i].Cells[9].Value = m_age.ToString();
Cell[9]改成Cell["年齡"]
以欄位名來定位...可能是重新Load後有變化?

沒有留言: