我有一个数据网格我得到一个例外,当我尝试重置datagrid的项目源

时间:2017-09-19 15:14:52

标签: c# wpf datagrid

这是运行的方法,它在程序启动时触发,当单击按钮刷新列表时(它从SQL服务器数据库中提取其信息,运行时间日志程序的其他人可以添加时间)这只是所有时间日志的主列表)

private void viewPeopleTimLog()
{
    string message;
    //Datagrid cleared out
    dtgPeopleTimLog.ItemsSource = null;

    //List of TimeLog Objects.
    //It passes back out a blank string if nothing goes wrong and passes 
    //back out the out the error message if something goes wrong
    PeopleTimeLogList logList = new PeopleTimeLogList(out message);
    if(string.IsNullOrEmpty(message)) //Everything is fine
    {
        dtgPeopleTimLog.ItemsSource = logList; //Line it fails on
    }
    else
    {
         //Code to print the exception message here
    }
}

TimeLog对象包含    1.人的身份#存储为int。    2.该人的姓名存储为字符串。    3.该人对完成的工作的评论存储为字符串。    4.记录时间的日期存储为DateTime。    5.存储为双精度的人记录的时间量。

这是datagrid的xaml代码

<DataGrid x:Name="dtgPeopleTimLog" HorizontalAlignment="Left" 
          Margin="10,45,0,0" VerticalAlignment="Top" Height="404" 
          Width="1000" AutoGenerateColumns="False">
    <DataGrid.Columns>
        <DataGridTextColumn Header="Date Logged" Binding="{Binding DateLogged}"/>
        <DataGridTextColumn Header="ID #" Binding="{Binding IDNumber}"/>
        <DataGridTextColumn Header="Name" Binding="{Binding PersonName}"/>
        <DataGridTextColumn Header="Time Logged" Binding="{Binding TimeLogged}"/>
        <DataGridTextColumn Header="Comment" Binding="{Binding Comment}">
            <DataGridTextColumn.ElementStyle>
                <Style>
                    <Setter Property="TextBlock.TextWrapping" Value="Wrap" />
                    <Setter Property="TextBlock.Width" Value="540"/>
                 </Style>
                 </DataGridTextColumn.ElementStyle>
              </DataGridTextColumn>
         </DataGrid.Columns>
    </DataGrid>

我在这里遗漏了什么吗?我看了看,看起来没有任何东西符合我的情况。我将所有列都从对象绑定到datagrid,我在获取TimeLog对象列表之前清除了itemssource,并将其作为itemssource放置。感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

好的,所以我根据提出的意见找出答案。答案是

private void viewPeopleTimLog()
{
    string message;

    dtgPeopleTimLog.ItemsSource = null;

    PeopleTimeLogList logList = new PeopleTimeLogList(out message);
    if(string.IsNullOrEmpty(message)) //Everything is fine
    {
        dtgPeopleTimLog.ItemsSource = logList;
    }
    else
    {
         //Code to print the exception message here
    }
}

和XAML

<DataGrid x:Name="dtgPeopleTimLog" HorizontalAlignment="Left" 
          Margin="10,45,0,0" VerticalAlignment="Top" Height="404" 
          Width="1000" />

这显然是明确定义的列的一个问题,因此我删除了明确定义的列并且它有效。我不需要特殊的标题信息,所以这可行。