2012-05-10 20 views
10

मैं डेटा ग्रिड के लिए आइटम स्रोत के रूप में datatable है, यह datatable कॉलम के बहुत सारे है। क्या नई टेबल बनाने के बिना उन सभी के बजाय कुछ कॉलम प्रदर्शित करना संभव है?WPF DataGrid बंधन और कॉलम प्रदर्शन

उत्तर

17

हाँ, यह है। बस AutoGenerateColumns=False पर निशान लगाएं और अपने कॉलम मैन्युअल रूप से परिभाषित करें। तुम्हें पता है, सामान्य पाठ बाध्य कॉलम, चेकबॉक्स कॉलम, कस्टम XAML टेम्पलेट कॉलम और अधिक उपयोग के रूप में आप MSDN Library documentation में देख सकते हैं कर सकते हैं।

<DataGrid ItemsSource="{Binding DataSource}" AutoGenerateColumns="False" > 
    <DataGrid.Columns> 
    <DataGridTextColumn Header="Simple Value" 
         Binding="{Binding SimpleValue}" Width="*" /> 
    <DataGridTemplateColumn Width="*" Header="Complex Value"> 
     <DataGridTemplateColumn.CellTemplate> 
      <DataTemplate> 
      <StackPanel> 
       <TextBox Text="{Binding ComplexValue}"/> 
       <TextBox Text="{Binding ComplexValue2}"/> 
      </StackPanel> 
      </DataTemplate> 
     </DataGridTemplateColumn.CellTemplate> 
     </DataGridTemplateColumn> 
    </DataGrid.Columns> 
    </DataGrid> 
+0

धन्यवाद !!!!!!!!! –

4

हाँ, हाँ बहुत ज्यादा। यदि आपकी टेबल संरचना और कॉलम नाम स्थिर रहता है तो डेटाग्रिड एक्सएएमएल AutoGenerateColums = False सेट करें और मैन्युअल रूप से सभी कॉलम बनाएं।

<dg:DataGrid Name="mydg" ItemsSource="{Binding Data}" AutoGenerateColumns="False"> 
<dg:DataGrid.Columns> 
    <dg:DataGridTextColumn Header="Col 0" Binding="{Binding FirstColumnName}" /> 
    <dg:DataGridTextColumn Header="Col 1" Binding="{Binding SecondColumnName}" /> 
</dg:DataGrid.Columns> 
</dg:DataGrid> 

और फिर codebehind सरल में तरह

mydg.ItemSource = Data.DefaultView; 

अब जब आपके DataTable स्तंभ FirstColumnName होता है और SecondColumnName वे अपने डेटा ग्रिड को databound किया जाएगा स्रोत प्रदान करते हैं।

+0

धन्यवाद !!!!!!!!!! –

+0

क्यों एक 'dg:' उपसर्ग है ..., क्या यह एक होना चाहिए? –

5

इसके अलावा, आप DataGrid.AutoGeneratingColumn घटना को संभालने और e.Cancel = true सेट स्तंभ आपके दिखाए जाने के लिए नहीं करना चाहते हैं के लिए कर सकते हैं। इस तरह आपको उन स्तंभों को मैन्युअल रूप से परिभाषित करने की आवश्यकता नहीं है जिन्हें आप दिखाना चाहते हैं।

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