Datagridtextcolumn bind to datatable

本文关键字:datatable to bind Datagridtextcolumn | 更新日期: 2023-09-27 18:12:33

当我有一个数据表时,我遇到了一些问题,我想将数据网格中的每个datagridtextcolumn绑定到数据表中的每个列。

我的代码如下

public class Packet
{
    public Header header { get; set; }
    public Frame frame { get; set; }
    public Tail tail { get; set; }
    public String id { get; set; }
    public Packet(String id,Header header, Frame frame, Tail tail)
    {
        this.id = id;
        this.header = header;
        this.frame = frame;
        this.tail = tail;
    }
}

因此在我的xaml这边

<Grid >
    <DataGrid AutoGenerateColumns="False" ItemsSource="{Binding Path=.}" Name="dgrid" SelectionChanged="dgrid_SelectionChanged">
        <DataGrid.Columns>
            <DataGridTextColumn Header="ID" Binding="{Binding Path=id}"/>
        </DataGrid.Columns>
    </DataGrid>
</Grid>

在我的代码端,ds是一个数据集,它有一个数据表。每一行是一个分组,4列对应报头、帧尾和id。我试图让id绑定正确的第一。但是id号不能在数据网格上显示。

dgrid.DataContext = ds.Tables[0];

它实际上显示正确的数据,如果我不使用datagridtext列在xaml端。但我想做的是在xaml端绑定到数据表。

Datagridtextcolumn bind to datatable

试试这个

 <Grid >
        <DataGrid AutoGenerateColumns="False" Name="dgrid" SelectionChanged="dgrid_SelectionChanged">
            <DataGrid.Columns>
                <DataGridTextColumn Header="ID" Binding="{Binding Path=id}"/>
            </DataGrid.Columns>
        </DataGrid>
    </Grid>
    dgrid.ItemsSource = ds.Tables[0].AsDataView();

如果你有一个像Packet这样的模型类,那么我建议使用可观察集合而不是DataTable来保存Packets的列表。DataTable的项目为DataRowView类型。

我甚至不确定你的DataTable如何持有Packet实例?

如果你的ds.Tables[0]。Packet类型的行[0]或ds.Tables[0]。Rows[0][0]Packet类型?