2010-09-02 17 views
5

मेरे पास कई कॉलम के साथ एक डाटाटेबल है, और एक डाटाग्रिड जिसमें मुझे केवल कुछ कॉलम प्रदर्शित करने की आवश्यकता है। मुझे इसे कैसे करना है इसका एक कोड नमूना चाहिए। मुझे उदाहरणों का एक पूरा समूह मिला जो मुझे ऑटोजनेर कॉलम को सही करने के लिए कहता है और तालिका को डेटाटेन्टेक्स्ट के रूप में सेट करता है ताकि मेरे डेटाटेबल में सभी कॉलम प्रदर्शित हो सकें। और मुझे लगता है कि मैं उन सभी कॉलम को छिपाने के लिए कोड के एक पेज में डाल सकता हूं जिनकी मुझे आवश्यकता नहीं है, बचे हुए लोगों को उचित क्रम और आकार में पुनर्व्यवस्थित करें, लेकिन निश्चित रूप से एक और अधिक शानदार तरीका होना चाहिए।डब्ल्यूपीएफ में, मैं डेटाटाइड कॉलम को डेटाटेबल के विशिष्ट कॉलम में कैसे बांध सकता हूं?

डिज़ाइनर में मैंने उन स्तंभों का संग्रह बनाया है जिन्हें मैं प्रदर्शित करना चाहता हूं, मुझे डेटाटेड मिल गया है, मैं अपने कोड में एक विशिष्ट डेटाटाइड कॉलम को मौजूदा डेटाटाइड कॉलम से कैसे बांधूं?

उत्तर

13

डेटाग्रिड में अपने डेटाटेबल को बाध्य करें, ऑटोजेनरेट कॉलम को गलत पर सेट करें, और उसके बाद आप जो भी कॉलम DataGrid.Columns जोड़ना चाहते हैं उसे जोड़ें। यहां दो कॉलम के साथ संग्रह नामक डेटाटेबल का उपयोग करके एक उदाहरण दिया गया है: आईडी और वैल्यू।

<DataGrid 
    ItemsSource="{Binding Path=Collection}" 
    AutoGenerateColumns=False 
    > 

    <DataGrid.Columns> 
     <DataGridTextColumn Header="Id" Binding="{Binding Path=Id}" /> 
     <DataGridTextColumn Header="Value" Binding="{Binding Path=Value}" /> 
    </DataGrid.Columns> 
</DataGrid> 
+1

मुझे लगता है कि एक्सएएमएल इतना अच्छा क्यों है। –

4

XAML बाइंडिंग मेरे लिए काम नहीं होगा क्योंकि मेरे DataTable कार्यावधि में उत्पन्न होता है तो डिजाइन समय में करने के लिए बाध्य करने के लिए कोई बात नहीं है। वैसे भी, मैं इस बात पर ठोकर खाई कि मैं यहां क्या करना चाहता हूं।

मेरी समस्याएं इसलिए थीं क्योंकि किसी कारण से मुझे ItemSource तालिका के DefaultView के बजाय तालिका में स्वयं को सेट करने के लिए कोई त्रुटि नहीं हुई थी, भले ही मैंने बाद में पढ़ा, तालिका आवश्यक इंटरफ़ेस को लागू नहीं करती है। लेकिन मुझे कोई फर्क नहीं पड़ने के लिए किसी भी त्रुटि के बिना मुझे यह जानने के लिए कुछ भी नहीं था कि मेरा ग्रिड खाली क्यों दिखाई देगा।

DataGridName.DataContext = DataSetName.DataTableName; 
DataGridName.ItemsSource = DataSetName.DataTableName.DefaultView; 

((DataGridTextColumn)DataGridName.Columns[1]).Binding = new Binding("DataTableColumnName1"); 
((DataGridTextColumn)DataGridName.Columns[0]).Binding = new Binding("DataTableColumnName2"); 
((DataGridTextColumn)DataGridName.Columns[2]).Binding = new Binding("DataTableColumnName3");