【问题标题】:Binding a DataTable to DataGrid WPF (VB.net)将 DataTable 绑定到 DataGrid WPF (VB.net)
【发布时间】:2023-04-06 09:17:01
【问题描述】:

我整天都在寻找什么感觉,但似乎无法解决这个问题,所以我想我会问自己。

我有一个这样构造的 DataTable:

        Dim dtAttendanceTimes As New DataTable

        Dim dcEmployee As New DataColumn With {
            .ColumnName = "Employee",
            .DataType = GetType(String)}
        dtAttendanceTimes.Columns.Add(dcEmployee)

        Dim dcDate As New DataColumn With {
            .ColumnName = "Date",
            .DataType = GetType(String)}
        dtAttendanceTimes.Columns.Add(dcDate)

        Dim dcClockIn As New DataColumn With {
            .ColumnName = "Clock In",
            .DataType = GetType(String)}
        dtAttendanceTimes.Columns.Add(dcClockIn)

        Dim dcClockType As New DataColumn With {
            .ColumnName = "Type",
            .DataType = GetType(String)}
        dtAttendanceTimes.Columns.Add(dcClockType)

        Dim dcApproved As New DataColumn With {
            .ColumnName = "Approved",
            .DataType = GetType(String)}
        dtAttendanceTimes.Columns.Add(dcApproved)

        For Each drAttendaceTime As DataRow In AttendancetimesAdaptor.GetDataByEmployeeID(intEmployeeID).Rows
            dtAttendanceTimes.Rows.Add(drAttendaceTime("fkEmployee"), drAttendaceTime("strDate"), drAttendaceTime("strClockIn"), drAttendaceTime("strType"), drAttendaceTime("strApproved"))
        Next

        dgAttendanceTimes.ItemsSource = dtAttendanceTimes.DefaultView

在 XAML 中,我像这样构造我的 DataGrid:

                        <DataGrid x:Name="dgAttendanceTimes" AutoGenerateColumns="False" Style="{StaticResource MyDataGridStyle}" Grid.Column="1" Grid.Row="1" Grid.RowSpan="3">
                    <DataGrid.Columns>
                            <DataGridTextColumn Header="Employee" x:Name="Employee" Width="*" Binding="{Binding Path=Employee}"/>
                            <DataGridTextColumn Header="Date" x:Name="Date" Width="*" Binding="{Binding Path=Date}"/>
                            <DataGridTextColumn Header="Clock In" x:Name="ClockIn" Binding="{Binding Path=ClockIn}"/>
                            <DataGridTextColumn Header="Type" x:Name="Type" Visibility="Hidden" Binding="{Binding Path=Type}"/>
                            <DataGridTextColumn Header="Approved" x:Name="Approved" Binding="{Binding Path=Approved}"/>
                        </DataGrid.Columns>
                </DataGrid>

然而,当我运行它时,我只得到空白行,我得到了适量的行,只是全部空白,没有列?

感谢任何帮助。

【问题讨论】:

    标签: wpf vb.net datatable datagrid


    【解决方案1】:

    您可以简单地在 DataTable 中添加列,如下所示:

     With dt.Columns
           .Add("SrNo", GetType(Integer))
           .Add("Name", GetType(String))
      End With
    

    并在 XAML 中添加 ItemsSource="{Binding}"

    现在在向数据表添加行之前添加以下行:

        dg.ItemSource= dt.DefaultView()
    

    现在将行添加到数据表中,它将自动反映到您的数据网格中。

    【讨论】:

      猜你喜欢
      • 2013-07-28
      • 2018-02-07
      • 2023-04-02
      • 1970-01-01
      • 1970-01-01
      • 2013-03-24
      • 2011-02-10
      • 2013-06-20
      • 1970-01-01
      相关资源
      最近更新 更多