2013-07-17 12 views
6

mam DataGridView i wypełnić go dynamicznie z mojej bazy danych za pomocą następującego koduC# uzyskać wartość tekstu komórka jeśli DataError jest wyzwalany

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 

Jak widać mam kolumnę Date. Gdy spróbuję edytować komórkę tej kolumny i wpisać nieprawidłowy format, zostanie wywołane zdarzenie DataError.

Teraz po prostu chcę uzyskać tekst o błędzie

private void dtgvLoadEx_DataError(object sender, DataGridViewDataErrorEventArgs e) { 

} 

lub dowolnego innego procesu, aby uzyskać tekst o błędzie.

+0

Jak zgłosić błąd po wprowadzeniu nieprawidłowego tekstu? – MoonKnight

+2

na przykład wstawiam do tej kolumny to "2023123" wywoła Event _DataError. Teraz chcę tylko uzyskać "2023123" – user2530833

+0

Jaki wyjątek stanowi wyjątek e.Exception? – sq33G

Odpowiedz

3

Ok chłopaki już rozwiązał problem. Tutaj podzielę się tym

private void dtgvLoadEx_DataError(object sender, DataGridViewDataErrorEventArgs e) 
     { 
      string s = dtgvLoadEx.EditingControl.Text; 
     } 
+0

Dzięki tej pracy doskonale. – user2530833

3

chcesz użyć argumentu zdarzenie następująco

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; 
} 

Edycja. Po przeczytaniu poniższego komentarza, jeśli pierwsza z powyższych nie zwróci błędnej wartości prania, może nie być to możliwe. Zamiast tego spróbuj użyć ErrorText.

Mam nadzieję, że to pomoże.

+0

Oczywiście powinieneś zrobić coś z ciągiem znaków ... –

+1

Próbuję tego, ale zwraca poprzednią wartość datagridview. Nie zwraca wartości błędu. – user2530833

+0

Zobacz moją edycję proszę. – MoonKnight

1

Można to zrobić przy użyciu niestandardowych walidacji zdarzenie CellValidating:

private void dataGridView_CellValidating(object sender, 
DataGridViewCellValidatingEventArgs e) 
{ 
    if (!DateTime.TryParse(e.FormattedValue)) 
    { 
     string s = e.FormattedValue; 
     e.Cancel = true; 
    } 
} 
+0

+1 dobra opcja ... – MoonKnight

Powiązane problemy