【发布时间】:2019-02-20 14:25:56
【问题描述】:
我正在尝试在具有两列的 DataGrid 上显示一个 DataTable。
当我更新 DataTable 时,DataGrid 会显示新行,但单元格是空的。我已经为此查看了许多不同的可能解决方案,但仍然无法显示结果。
这是我的 DataGrid 的 xaml 代码:
<DataGrid x:Name="SubjectsList" Height="500" ScrollViewer.CanContentScroll="True" AutoGenerateColumns="False" CanUserAddRows="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Subject" Width="2*"/>
<DataGridTextColumn Header="Weekly" Width="*"/>
</DataGrid.Columns>
</DataGrid>
以下是我用于更新表格的 C# 代码:
public void AddSubject(object sender, RoutedEventArgs e)
{
Subject temp = new Subject(SubjectName.Text, Convert.ToInt32(PerWeek.Text));
subjects.Add(temp);
MessageBox.Show(temp.Name + " has been added");
for(int i = 0; i < subjectsTable.Rows.Count; i++)
{
subjectsTable.Rows.RemoveAt(i);
}
foreach (Subject subject in subjects)
{
DataRow dataRow = subjectsTable.NewRow();
dataRow[0] = subject.Name;
dataRow[1] = subject.ClassesPerWeek;
subjectsTable.Rows.Add(dataRow);
MessageBox.Show(subject.Name);
}
SubjectsList.ItemsSource = subjectsTable.DefaultView;
}
在上面的代码中,SubjectsList 是我的 DataGrid,subjectsTable 是我的 DataTable。
我尝试了以下方法:
- 使用
DataGrid.DataContext而不是DataGrid.ItemSource - 在我的 xaml 代码中添加了
ItemSource = "{Binding Path=subjectsTable}" - 尝试使用
DataGrid.Items.Add(dataRow)将行添加为项目 - 为我的用户定义类
Subject的每个数据成员添加了getter和setter方法 - 我所有的变量、数据成员和数据结构都是公开的。
如果有人知道如何使数据可见,请帮助我。谢谢。
这是我添加两个主题后发生的情况:
【问题讨论】:
标签: c# wpf xaml datatable datagrid