我有一个DataGridView
,我通过以下代码从我的数据库中动态填充它
DataGridViewTextBoxColumn colID = new DataGridViewTextBoxColumn();
colID.HeaderText = "id";
colID.DataPropertyName = "id";
colID.ReadOnly = true;
colID.Visible = false;
dtgvLoadEx.Columns.Add(colID);
DataGridViewTextBoxColumn colLoadExpiryDate = new DataGridViewTextBoxColumn();
//CalendarColumn colLoadExpiryDate = new CalendarColumn();
colLoadExpiryDate.HeaderText = "LoadExpiryDate(mm/dd/yy)";
colLoadExpiryDate.Width = 158;
colLoadExpiryDate.DataPropertyName = "LoadExpiryDate";
colLoadExpiryDate.ReadOnly = false;
colLoadExpiryDate.MaxInputLength = 10;
dtgvLoadEx.Columns.Add(colLoadExpiryDate);
dtgvLoadEx.DataSource = data(); //Return data table from my Database
如您所见,我有一个Date
列。当我尝试编辑该列的单元格并键入无效格式时,将触发DataError
事件。
现在我只想从
获取错误文本private void dtgvLoadEx_DataError(object sender, DataGridViewDataErrorEventArgs e) {
}
或任何其他过程以获取错误文本。
答案 0 :(得分:3)
您希望使用以下事件参数
string errorText;
private void dataGridView_DataError(object sender, DataGridViewDataErrorEventArgs e)
{
// This will return the last text entry that was not erroneous.
string cellValue = dataGridView[e.ColumnIndex, e.RowIndex].Value.ToString();
// This will get the text indicating the error condition.
errorText = dataGridView[e.ColumnIndex, e.RowIndex].ErrorText;
}
编辑。阅读下面的评论,如果上面的第一个没有返回错误的striing值,那么它可能是不可能的。请尝试使用ErrorText
代替。
我希望这会有所帮助。
答案 1 :(得分:3)
好的我已经解决了这个问题。在这里,我要分享它
private void dtgvLoadEx_DataError(object sender, DataGridViewDataErrorEventArgs e)
{
string s = dtgvLoadEx.EditingControl.Text;
}
答案 2 :(得分:1)
您可以使用CellValidating事件进行自定义验证:
private void dataGridView_CellValidating(object sender,
DataGridViewCellValidatingEventArgs e)
{
if (!DateTime.TryParse(e.FormattedValue))
{
string s = e.FormattedValue;
e.Cancel = true;
}
}