如何从DataView获取值

本文关键字:获取 DataView | 更新日期: 2023-09-27 17:51:26

当用户单击TreeView中的元素时,会触发此函数:

  private void treeView_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
    {
        Vozlisce v = (Vozlisce)treeView.SelectedItem;      
        v.tabela.pretvoriListVDataTable(); 
        seznam.ItemsSource = v.tabela.dt.DefaultView; 
    }

它将类型为ObservableCollection<Vozlisce>的dt中的元素复制到具有xaml:的自定义数据网格中

 <DataGrid x:Name="seznam" Margin="516,64,131.2,35.4" ItemsSource="{Binding DataSource}"  AlternatingRowBackground="Gainsboro"  AlternationCount="2" AutoGenerateColumns="False" >
        <DataGrid.Columns>
            <DataGridTemplateColumn  Header="name" IsReadOnly="True">
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <StackPanel>
                            <TextBox Text="{Binding ime}"/>
                        </StackPanel>
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>
            <DataGridTemplateColumn  Header="value" >
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <StackPanel>
                            <TextBox Text="{Binding utez}"/>
                        </StackPanel>
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>
        </DataGrid.Columns>
    </DataGrid>

seznam.ItemsSource=v.tabela.dt.DefaultView;

我的问题是,当我试图从DataGrid获取数据时,当用户单击保存按钮时,它不会从数据网格中获取当前更改的数据,而是用seznam.ItemsSource = v.tabela.dt.DefaultView; 复制我一开始输入的相同数据

保存按钮功能:

     private void btnShraniUtezi_Click(object sender, RoutedEventArgs e)
    {         
        DataView dataView = (DataView)seznam.ItemsSource;
        DataTable dt = dataView.ToTable();
        //test
        double val = dt.Rows[1].Field<double>("utez");
        MessageBox.Show(val.ToString());
    }

如何从DataGrid获取当前更改的数据?我正在使用WPF。

如何从DataView获取值

您在描述中声明了这一行"seznam.ItemsSource = v.tabela.dt.DefaultView;"-您是在某些代码隐藏或视图模型设置中这样做的吗?如果是这样,那么您将破坏在xaml中声明的属性"DataSource"的绑定。这就是你的意图吗?

您与ime和utez的绑定是双向的,因此任何写入数据网格中这些位置的尝试都应该可以通过在视图模型中的属性上放置断点来捕获,这样您就可以更好地了解发生了什么,或者更确切地说,没有发生什么。