-3
private void dataGridView1_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)
    {
        try
        {
            if ((dataGridView1.Focused) && (dataGridView1.CurrentCell.ColumnIndex == 0))
            {
                dtpInstallment.Location = dataGridView1.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, false).Location;
                dtpInstallment.Visible = true;
                if (dataGridView1.CurrentCell.Value != DBNull.Value)
                {
                   // dtpInstallment.Value = DateTime.Today;
                   dtpInstallment.Value = (DateTime)dataGridView1.CurrentCell.Value;

               //     DateTime date = (DateTime)dataGridView1.CurrentCell.Value;
                 //   dtpInstallment.Value = DateTime.Parse(date.ToString("dd/MM/yyyy"));


                }
                else
                {
                    dtpInstallment.Value = DateTime.Today;
                }
            }
            else
            {
                dtpInstallment.Visible = false;
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }

在这个日期时间抛出异常...... dataGridView1.CurrentCell.Value..但无法转换为 DateTimePicker 的 dtpInstallment.value

4

4 回答 4

2

这是因为您正在解析的值的格式不正确。尝试使用ParseExact

string poop = "2005-12-14 23:12:34";
string currentFormat = "yyyy-MM-dd HH:mm:ss";
DateTime poo = DateTime.ParseExact(poop, currentFormat, System.Globalization.CultureInfo.InvariantCulture);
// yyyy-MM-dd HH:mm:ss ==> you can change the format that matches the current
//                         value of your dataGridView1.CurrentCell.Value
于 2012-09-10T06:47:32.443 回答
1

单元格中的值不是有效日期。也许改用DateTime.TryParse。这样,如果它是有效格式,您将获得 DateTime,如果不是,则不例外。

于 2012-09-10T06:48:42.723 回答
1

尝试使用 CellContentClick 事件

private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
 DateTime dtpInstallment = DateTime.Parse(dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString());
}

然后使用 dataGridView1_CellBeginEdit 事件

于 2012-09-10T07:35:16.677 回答
0

由于您检查 DBNull.Value,我猜您使用 SqlDataSource 检索数据,并且您的日期时间值确实属于SqlDateTime类型。

于 2012-09-10T06:53:05.437 回答