2008-08-28 16 views
7

से DefaultView DataRowView प्राप्त करें यहां स्थिति है: मुझे DataRow के विरुद्ध एक WPF FixedPage बांधना होगा। बाइंडिंग DataRows के खिलाफ काम नहीं करते हैं; वे DataRowViews के खिलाफ काम करते हैं। मुझे इसे सबसे सामान्य तरीके से करने की ज़रूरत है, क्योंकि मुझे DataRow में क्या है इसके बारे में कुछ भी नहीं पता है और इसका कोई नियंत्रण नहीं है।DataRow

मुझे DataRow के लिए DataRowView प्राप्त करने में सक्षम होना चाहिए। मैं विधि DefaultView पर विधि का उपयोग नहीं कर सकता क्योंकि यह एक कुंजी लेता है, और इस बात की कोई गारंटी नहीं है कि तालिका में प्राथमिक कुंजी सेट होगा।

क्या किसी के पास इस बारे में जाने का सबसे अच्छा तरीका है?

उत्तर

6

बिल्कुल कोड का एक सेक्सी टुकड़ा नहीं है लेकिन यह तालिका को लूप किए बिना पंक्ति को खोजने का एक स्वचालित तरीका प्रतीत नहीं होता है।

 DataRowView newRowView = null; 
     foreach (DataRowView tempRowView in myDataTable.DefaultView) 
     { 
      if (tempRowView.Row == rowToMatch) 
       newRowView = tempRowView; 
     } 
     if (newRow != null) 
      UseNewRowView(newRowView); 
     else 
      HandleRowNotFound(); 
+0

अरे, यह केवल मुझे 4-5 साल लगे। – Will

3
row.Table.DefaultView[row.Table.Rows.IndexOf(row)] 

यह एक ठीक जवाब है। लेकिन यदि आप स्वयं को इस स्थिति में पाते हैं, तो आपको डेटा व्यू और उनके उपयोग के बारे में अधिक जानने पर विचार करना चाहिए, फिर तालिका-केंद्रित के बजाय अपने कोड को देखने-केंद्रित करने के लिए दोबारा प्रतिक्रिया दें।

+0

यह एक अच्छा विचार नहीं है, अगर डिफ़ॉल्ट दृश्य फ़िल्टर किया गया है तो इंडेक्स लाइन नहीं हो सकता है। –

+1

@ जोएल बरसोट्टी: जब तक आप ऐसा करने से पहले प्रकार/फ़िल्टर हटाते हैं, जिसके बाद आप उन्हें फिर से जोड़ सकते हैं। लेकिन एक अच्छा पकड़ो। यदि आपके पास * बेहतर उत्तर * है, तो कृपया इसे प्रदान करने में संकोच न करें और (यदि यह काम करता है) तो मुझे इसे बेहतर तरीके से चुनने में खुशी होगी। – Will