【问题标题】:WPF - How can I get newly inserted row data row gridWPF - 如何获取新插入的行数据行网格
【发布时间】:2014-11-16 16:06:00
【问题描述】:

默认情况下我的网格是空的,我试图获取用户插入到我的网格的行数据,不知何故在提交更改后,我必须知道如何获取,我尝试使用 grid.SelectedItem ,但它总是返回空,

我的 XAML 代码如下

 <DataGrid x:Name="grdInfo" Height="373" VerticalAlignment="Top" DockPanel.Dock="Top" Margin="0,10,0,0" RowEditEnding="grdInfoSave" AutoGenerateColumns="False">
            <DataGrid.Columns>
                <DataGridTextColumn Header="No" Binding="{Binding No}" Width="50" />
                <DataGridTextColumn Header="Description" Binding="{Binding Description}" Width="*" />
                <DataGridTextColumn Header="Total" Binding="{Binding Total}" Width="120" />
            </DataGrid.Columns>
 </DataGrid>

我提交编辑的 Cs 代码如下

 private void grdInfoSave(object sender, DataGridRowEditEndingEventArgs e )
 {
      if (e.EditAction == DataGridEditAction.Commit)
      {
        //Try to get the user inserted value and process it
        DataRowView row = (DataRowView)grdInfo.SelectedItem;
        int No = Convert.ToInt32(row["No"]);
      }
 }

生成表格的代码

 private void genTable()
 {
        DataTable dtInfo = new DataTable(); 

        dtInfo.Columns.Add(new DataColumn("No", Type.GetType("System.Int32")));
        dtInfo.Columns.Add(new DataColumn("Description", Type.GetType("System.String")));
        dtInfo.Columns.Add(new DataColumn("Total", Type.GetType("System.String")));

        grdInfo.ItemsSource = dtInfo.DefaultView;  
 }

我需要的是当用户输入 1 为No 列,Apple 为描述,200 为总,我希望得到整行数据。

【问题讨论】:

  • 用户在哪里输入数据?
  • @AfzaalAhmadZeeshan 在 GUI 中,我允许属性 CanUserAddRow ,这意味着用户可以自己添加行
  • 不不,我的意思是,它会是动态的吗?而且,你没有任何类来填充数据吗?
  • @AfzaalAhmadZeeshan 我已经发布了我生成表格的方式

标签: c# wpf c#-4.0


【解决方案1】:

您可以使用以下方法将新插入的行访问到数据网格。

private void grdInfoSave(object sender, DataGridRowEditEndingEventArgs e )
 {
      if (e.EditAction == DataGridEditAction.Commit)
      {
        //Try to get the user inserted value and process it
        DataRow newrow= e.Row.DataContext as DataRow; // If datarow does not work, replace will required databind class.
        String new_desc = newrow["Description"].ToString();
        DataRowView row = (DataRowView)grdQuoteDetail.SelectedItem;
        int No = Convert.ToInt32(row["No"]);
      }
 }

来源 - http://blogs.u2u.be/diederik/post/2009/09/29/Inserting-Updating-and-Deleting-from-a-WPF-DataGrid.aspx

【讨论】:

  • e.Row.DataContext 总是返回 null
猜你喜欢
  • 2023-03-31
  • 2020-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-14
相关资源
最近更新 更多