2013-07-17 5 views
6

शुरू हो रहा है मैं एक DataGridView है और मैं निम्नलिखित कोडC# सेल पाठ मान जाओ अगर DataError

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

अमान्य पाठ दर्ज होने पर त्रुटि को कैसे उठाया जाए? – MoonKnight

+2

उदाहरण के लिए मैं उस कॉलम में डालता हूं यह "2023123" यह _DataError ईवेंट ट्रिगर करेगा। अब मैं बस "2023123" – user2530833

+0

प्राप्त करना चाहता हूं e.Exception में किस प्रकार का अपवाद है? – sq33G

उत्तर

3

ठीक है लोग मुझे पहले से ही समस्या हल:

+0

धन्यवाद यह काम पूरी तरह से। – user2530833

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 का उपयोग करने का प्रयास करें।

मुझे उम्मीद है कि इससे मदद मिलती है।

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

बेशक आपको स्ट्रिंग एस के साथ कुछ करना चाहिए ... –

+1

मैं इसे आज़माता हूं लेकिन यह डेटाग्रिडव्यू के पिछले मान को वापस करता है। यह त्रुटि मान वापस नहीं करता है। – user2530833

+0

कृपया मेरा संपादन देखें। – MoonKnight

1

आप एक कस्टम मान्यता का उपयोग कर CellValidating घटना कर सकता है। यहां मैं इसे

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

+1 अच्छा विकल्प ... – MoonKnight

संबंधित मुद्दे