7

我有一个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) {

}

或任何其他过程以获取错误文本。

4

3 回答 3

4

好的,伙计们,我已经解决了这个问题。这里我来分享一下

 private void dtgvLoadEx_DataError(object sender, DataGridViewDataErrorEventArgs e)
        {
            string s = dtgvLoadEx.EditingControl.Text;
        }
于 2013-07-17T11:54:29.470 回答
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;
}

编辑。阅读了下面的评论后,如果上面的第一个没有返回错误的字符串值,那么它可能是不可能的。尝试ErrorText改用。

我希望这有帮助。

于 2013-07-17T10:20:07.273 回答
1

您可以使用 CellValidating 事件进行自定义验证:

private void dataGridView_CellValidating(object sender,
DataGridViewCellValidatingEventArgs e)
{
    if (!DateTime.TryParse(e.FormattedValue))
    {
         string s = e.FormattedValue;
         e.Cancel = true;
    }
}
于 2013-07-17T10:31:42.457 回答