से हटाई गई पंक्तियों तक पहुंचने के लिए मेरे पास एक मूल WinForm है जिसमें एक सदस्य के रूप में MyDataTable _dt
है। MyDataTable प्रकार विजुअल स्टूडियो 2005 (डेटाटेबल से MyDataTable विरासत) में "टाइप किए गए डेटासेट" डिज़ाइनर टूल में बनाया गया था _dt
ADO.NET के माध्यम से डीबी से पॉप्युलेट हो जाता है। के रूप में उपयोगकर्ता बातचीत से परिवर्तन के आधार पर, मैं तो जैसे मेज से एक पंक्ति को हटा दें:डेटाटेबल
_dt.FindBySomeKey(_someKey).Delete();
बाद में, _dt
एक संवाद फार्म के लिए मूल्य द्वारा पारित कर दिया है। वहाँ से, मैं एक स्ट्रिंग के निर्माण के लिए सभी पंक्तियों के माध्यम से स्कैन करने के लिए की जरूरत है:
foreach (myDataTableRow row in _dt)
{
sbFilter.Append("'" + row.info + "',");
}
समस्या यह है कि एक को हटाने के बाद ऐसा करने पर निम्न अपवादों के फेंक दिया जाता है है: DeletedRowInaccessibleException: Deleted row information cannot be accessed through the row.
कि आसपास काम मैं वर्तमान में उपयोग कर रहा हूँ (जो एक हैक की तरह लगता है) पीछा कर रहा है:
foreach (myDataTableRow row in _dt)
{
if (row.RowState != DataRowState.Deleted &&
row.RowState != DataRowState.Detached)
{
sbFilter.Append("'" + row.info + "',");
}
}
मेरा प्रश्न: इस ऐसा करने के लिए उचित तरीका है? फोरैच लूप एक्सेस पंक्तियों को क्यों Delete()
विधि के माध्यम से टैग किया गया है ??
आपको 'अलग' की जांच करने की आवश्यकता नहीं है। – SLaks