2017-02-23 68 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

相关问题