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

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 に答える