2017-02-23 71 views
0

我一直在努力解決這個問題,並且Google很久沒有找到解決方案。我創建了一個SQL表/數據庫,用戶將數據輸入到我創建的輸入字段中,然後按下保存按鈕將其保存到數據庫。然後我在另一個選項卡綁定到我的表的數據網格,但一旦點擊另一個選項卡上的保存按鈕,網格不返回到該選項卡時顯示任何結果,我在這裏做錯了什麼,或者我必須編寫代碼刷新?下面是我的代碼爲數據網格:爲什麼我的數據網格不顯示我的輸入數據?

<DataGrid x:Name="employeeDetailsTableDataGrid" AutoGenerateColumns="False" EnableRowVirtualization="True" ItemsSource="{Binding}" Margin="295,160,26,85" RowDetailsVisibilityMode="VisibleWhenSelected" SelectionChanged="employeeDetailsTableDataGrid_SelectionChanged" FontFamily="Arial"> 
        <DataGrid.Columns> 
         <DataGridTextColumn x:Name="employeeIDColumn" Binding="{Binding EmployeeID}" Header="Employee ID" IsReadOnly="True" Width="SizeToHeader"/> 
         <DataGridTextColumn x:Name="forenameColumn" Binding="{Binding Forename}" Header="Forename" Width="SizeToHeader"/> 
         <DataGridTextColumn x:Name="surnameColumn" Binding="{Binding Surname}" Header="Surname" Width="SizeToHeader"/> 
         <DataGridTemplateColumn x:Name="dOBColumn" Header="DOB" Width="SizeToHeader"> 
          <DataGridTemplateColumn.CellTemplate> 
           <DataTemplate> 
            <DatePicker SelectedDate="{Binding DOB, Mode=TwoWay, NotifyOnValidationError=true, ValidatesOnExceptions=true}"/> 
           </DataTemplate> 
          </DataGridTemplateColumn.CellTemplate> 
         </DataGridTemplateColumn> 
         <DataGridTextColumn x:Name="emailAddressColumn" Binding="{Binding EmailAddress}" Header="Email Address" Width="SizeToHeader"/> 
         <DataGridTextColumn x:Name="countryColumn" Binding="{Binding Country}" Header="Country" Width="SizeToHeader"/> 
         <DataGridTextColumn x:Name="addressColumn" Binding="{Binding Address}" Header="Address" Width="SizeToHeader"/> 
         <DataGridTextColumn x:Name="cityColumn" Binding="{Binding City}" Header="City" Width="SizeToHeader"/> 
         <DataGridTextColumn x:Name="postcodeColumn" Binding="{Binding Postcode}" Header="Postcode" Width="SizeToHeader"/> 
         <DataGridTextColumn x:Name="skill1Column" Binding="{Binding Skill1}" Header="Skill 1" Width="SizeToHeader"/> 
         <DataGridTextColumn x:Name="skill2Column" Binding="{Binding Skill2}" Header="Skill 2" Width="SizeToHeader"/> 
         <DataGridTextColumn x:Name="skill3Column" Binding="{Binding Skill3}" Header="Skill 3" Width="SizeToHeader"/> 
         <DataGridCheckBoxColumn x:Name="job1Column" Binding="{Binding Job1}" Header="Job 1" Width="SizeToHeader"/> 
         <DataGridCheckBoxColumn x:Name="job2Column" Binding="{Binding Job2}" Header="Job 2" Width="SizeToHeader"/> 
         <DataGridCheckBoxColumn x:Name="job3Column" Binding="{Binding Job3}" Header="Job 3" Width="SizeToHeader"/> 
         <DataGridCheckBoxColumn x:Name="employeeAvailabilityColumn" Binding="{Binding EmployeeAvailability}" Header="Employee Availability" Width="SizeToHeader"/> 
        </DataGrid.Columns> 
       </DataGrid> 
      </Grid> 

任何幫助非常感謝,先謝謝您。

+0

你綁定到視圖模型?通常我的'ItemsSource'看起來像這樣:'ItemsSource =「{Binding CollectionName}」' –

+0

哦,那麼我會改變我的表名? –

+0

以前的綁定設置爲:ItemsSource =「{綁定模式= OneWay}」 –

回答

0

您需要確保ItemsSource="{Binding}"已更新爲屬性名稱,或者對於此處綁定的屬性,應該使用該屬性名稱引發PropertyChangedEventHandler,以便xaml獲取發生更改的通知,因此您的數據網格應該刷新。

現在看起來好像你的ItemsSource綁定到它繼承的任何對象。可能是視圖模型。 如何在設置綁定屬性名:ItemsSource="{Binding PropertyName}"

另一種可能的解決辦法是刷新網格grid.Items.Refresh();

+0

該屬性是數據庫中的實際表嗎?如果是這樣,它不允許我輸入完整的表格來綁定到特定的列等。 –

+0

@AaronG否該屬性不會是數據庫中的實際表格。它可以是Table.ColumnName。它需要是datagridview的DataContext中的屬性。收聽DataGridView的datacontext並查看關聯的對象類型。從該對象中選擇要綁定的屬性。該屬性的DataType可以是Datatable。 – Versatile

相關問題