C# DeFultVIEW显示一个额外的列,空白列有一个位置保持器。
我正在将DataTable附加到DataGrid。我的datatable有三列。第一个和最后一个填充,中间一个为空。但是,当我将DATATATE附加到DATAGRID时,空白列填充了“Stase.DATA .DATAOWVIEW”,最后添加了一个空白列(请参阅附图)。我希望中间的数据列保持空白,不希望添加空白的结束列。当我调试代码时,我使用DataSet Visualizer查看我的datatable,它看起来正是我想要的。我做错了什么C# DeFultVIEW显示一个额外的列,空白列有一个位置保持器。,c#,wpf,xaml,C#,Wpf,Xaml,我正在将DataTable附加到DataGrid。我的datatable有三列。第一个和最后一个填充,中间一个为空。但是,当我将DATATATE附加到DATAGRID时,空白列填充了“Stase.DATA .DATAOWVIEW”,最后添加了一个空白列(请参阅附图)。我希望中间的数据列保持空白,不希望添加空白的结束列。当我调试代码时,我使用DataSet Visualizer查看我的datatable,它看起来正是我想要的。我做错了什么 DataTable visualDataTable
DataTable visualDataTable = new DataTable();
visualDataTable.Columns.Add("EMS", typeof(String));
visualDataTable.Columns.Add(" ", typeof(String));
visualDataTable.Columns.Add("Algo", typeof(String));
<DataGrid x:Name="Sfs1clf6_Table" IsReadOnly="True" Grid.Row="0" Margin="0,22,0,0" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="EMS" Binding="{Binding EMS}" Width="50" FontSize="14"/>
<DataGridTextColumn Header="" Binding="{Binding}" Width="50" FontSize="14"/>
<DataGridTextColumn Header="Algo" Binding="{Binding Algo}" Width="50" FontSize="14"/>
</DataGrid.Columns>
</DataGrid>
DataTable visualDataTable=newdatatable();
visualDataTable.Columns.Add(“EMS”,typeof(String));
visualDataTable.Columns.Add(“,typeof(String));
visualDataTable.Columns.Add(“Algo”,typeof(String));
您如何分配DataGrid的
项资源
,数据模型是什么样子的?看起来您正在使用AutoGenerateColumns
,并使用包含两个字符串属性(EMS和Algo)和一个DataRowView属性(不确定为什么这里没有标题…)的对象集合填充网格。关于额外的列,正如前面所述,这只是剩余的空白空间。我只是将DataTable分配给DataGrid,如下所示:DataGrid.ItemsSource=visualDataTable.DefaultView;visualDataTable
只是一个标准的.Net数据表吗?因为如果是这样的话,你不应该得到你在问题中的形象。。。AutoGenerateColumns将自动为DataTable中的每个属性生成一列,并将标题分配给任何列名,但是column2没有标题,属于DataRowView类型,这是非常罕见的,除非您的visualDataTable
创建不正确。这意味着您的第二列是数据类型System.Data.DataRowView
。WPF的DataGrid不知道如何呈现该数据类型,因此使用默认值,即包含对象的.ToString()
的标签,该标签通常是完整的类名。