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中有值。但是无法转换为dtpInstallment.value,即DateTimePicker
答案 0 :(得分: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
答案 1 :(得分:1)
单元格中的值不是有效日期。也许尝试DateTime.TryParse。这样,如果DateTime是有效格式,您将获得DateTime,如果不是,则不会出现异常。
答案 2 :(得分:0)
由于您检查了DBNull.Value,我猜您使用SqlDataSource检索数据,并且您的日期时间值实际上是SqlDateTime类型。