У меня есть datatable как Item source для DataGrid, у этого datatable есть много столбцов. Возможно ли отображать несколько столбцов, а не все из них, без создания новой таблицы?
WPF привязка Datagrid и отображение столбцов
Ответ 1
Да, это так. Просто отметьте AutoGenerateColumns=False
и вручную определите свои столбцы. Вы можете использовать обычные текстовые столбцы, столбцы столбцов, настраиваемые столбцы шаблона XAML и т.д., Как вы можете видеть в документации документации MSDN.
<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>
Ответ 2
Кроме того, вы можете обработать DataGrid.AutoGeneratingColumn событие и установить e. Отменить= true для столбцов, которые вы не хотите показывать. Таким образом, вам не нужно вручную определять столбцы, которые вы хотите показать.
Ответ 3
Да, да очень. Если ваша структура таблицы и имя столбца остаются постоянными, то в Datagrid XAML установите 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>
а затем в коде просто предоставить источник, например
mydg.ItemSource = Data.DefaultView;
Теперь, когда ваш DataTable содержит столбец FirstColumnName
и SecondColumnName
, они будут привязаны к вашему Datagrid.