WPF datagridview - 未按Enter键时过时的值

时间:2013-04-29 14:59:08

标签: c# wpf wpfdatagrid

我有一个名为mainEvents_sql的datagridview,其中包含以下列:

<DataGrid.Columns >
    <DataGridTextColumn Header="Event ID"  Binding="{Binding id}" IsReadOnly="True" />
    <DataGridTextColumn Header="event name" Binding="{Binding name}" Width="*" />
    <DataGridTemplateColumn>
        <DataGridTemplateColumn.CellTemplate>
            <DataTemplate>
                <Button Content="Update" x:Name="btnUpdate"
                        Click="btnUpdate_Click" CommandParameter="{Binding name}" >
                </Button>
            </DataTemplate>
        </DataGridTemplateColumn.CellTemplate>
    </DataGridTemplateColumn>
 </<DataGrid.Columns >

我正在尝试更新按钮,我得到的是当前单元格,但它是原始的而不是新值,这是我的btnUpdate事件:

private void btnUpdate_Click(object sender, EventArgs e)
{
    DataRowView selectedFile = ((FrameworkElement)sender).DataContext as DataRowView;
    if (mainEvents_sql.SelectedItems.Count > 0){
         String str = Convert.ToString(selectedFile.Row.ItemArray[1]);
         // update the DB with ADO .net
    }
}

str是原始值,我如何获得新值?

编辑: 如果用户按下输入但是当他通过单击另一个项目退出单元格时,我得到当前值,我该如何解决?

1 个答案:

答案 0 :(得分:1)

add(my datagrid).CommitEdit();在我做出改变之前,另一个优点是这种方式是仅在保存事件上更新我的源对象,所以它应该更快。