[英]VB.net WPF DataGrid ObservableCollection Binding property update
[英]Binding a DataTable to DataGrid WPF (VB.net)
我一直在尋找整天的感覺,但似乎無法解決這個問題,所以我想我會問自己。
我有一個像這樣構造的數據表:
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>
但是,當我運行它時,我只會得到空白行,我會得到正確數量的行,只是全部空白而沒有列?
任何幫助表示贊賞。
您可以簡單地在DataTable中添加列,如下所示:
With dt.Columns
.Add("SrNo", GetType(Integer))
.Add("Name", GetType(String))
End With
然后在XAML中添加ItemsSource="{Binding}"
現在,在將行添加到數據表之前,添加以下行:
dg.ItemSource= dt.DefaultView()
現在,將行添加到數據表中,它將自動反映到您的數據網格中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.