2017-09-19 53 views
0

這裏是運行的方法,它在程序的開始時被觸發,並且當按鈕是點擊刷新列表(它拉從一個SQL Server數據庫中的信息運行的時間記錄程序可以添加時間可以到本別人只是所有的時間記錄的主列表)我有一個datagrid我收到一個異常,說當我嘗試重置datagrid的項目時,項目集合必須爲空

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.該人的ID號存儲爲int。 2.該人的姓名以字符串形式存儲。 3.該人對已完成工作的評論以字符串形式存儲。 4.記錄時間的日期存儲爲DateTime。 5.以雙人身份存儲的人員記錄的時間量。

這裏是爲DataGrid

<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> 

我在這裏失去了一些東西的XAML代碼?我看了看,看起來沒有任何東西符合我的情況。我將所有列從對象綁定到數據網格,並且在獲取TimeLog對象列表並將其放置爲itemssource之前清除itemssource。任何幫助表示感謝,謝謝!

+0

嘗試在'dtgPeopleTimLog.ItemsSource = logList;'上設置斷點,並在調試器中檢查dtgPeopleTimLog.Items屬性的內容。不應該有任何項目 – ASh

+1

當您將''標記放入非DataGrid屬性(如'DataGrid.Columns')的任何內容並因此作爲項目被隱式處理時,您可能會得到此異常。你在這裏展示的是你真正的XAML嗎? – Clemens

+0

是的,它是@Clemens它是。我已經做了確切的代碼(不同的對象,但相同的想法)之前,與另一個程序,並沒有造成任何問題 –

回答

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" /> 

這顯然是與明確定義列的問題,所以我刪除了明確定義的列和它的工作。我不需要特殊的標題信息,所以這個工作。

相關問題