【问题标题】:c# how to remove selected item from datagrid using buttonc#如何使用按钮从数据网格中删除选定的项目
【发布时间】:2018-02-17 02:04:28
【问题描述】:

我有 daragrid,我想使用按钮删除选定的行。我该怎么做?谢谢

dataGrid.ItemsSource = new List<User>(FormOfAddData.MyList);

【问题讨论】:

  • 仅供参考,所有的反对意见都是由于缺乏感知工作。如果您需要帮助,请展示一些伪单元测试

标签: c# wpf datagrid


【解决方案1】:

将您的数据绑定到可观察的集合上。只需将其从您的收藏中删除即可。

var myData = new ObservableCollection<User>(FormOfAddData.MyList);
dataGrid.ItemsSource = myData;

private void OnButtonClick(){
  User user = dataGrid.SelectedItem as User;
  if(user != null){
    myData.Remove(user);
  }
}

【讨论】:

    【解决方案2】:

    你可以使用类似下面的东西;

     private void DeleteSelectedRows_Click(object sender, EventArgs e)
     {
         foreach (DataGridViewRow row in dataGrid.SelectedRows)
         {
             dataGrid.Rows.RemoveAt(row.Index);
         }
     }
    

    【讨论】:

      【解决方案3】:
      if (datagrid1.SelectedItem != null)
      {
          datagrid1.Items.Remove((BindingData)datagrid1.SelectedItem);
      }
      

      【讨论】:

      • 设置了 ItemsSource 属性后,您无法删除 Items 集合中的项目。
      【解决方案4】:

      如果您按照@Tobias Theel 的建议使用ObservableCollection 而不是List

      dataGrid.ItemsSource = new System.Collections.ObjectModel.ObservableCollection<User>(FormOfAddData.MyList);
      

      ..您可以按如下方式从源集合中删除所选项目。

      XAML:

      <Button Content="Delete" Click="Button_Click_1" />
      

      代码:

      private void Button_Click_1(object sender, RoutedEventArgs e)
      {
          User user = dataGrid.SelectedItem as User;
          if (user != null)
          {
              IList<User> users = dataGrid.ItemsSource as IList<User>;
              if (users != null)
                  users.Remove(user);
          }
      }
      

      如果您继续使用List&lt;User&gt;,则必须重置ItemsSource 属性:

      private void Button_Click_1(object sender, RoutedEventArgs e)
      {
          User user = dataGrid.SelectedItem as User;
          if (user != null)
          {
              IList<User> users = dataGrid.ItemsSource as IList<User>;
              if (users != null)
                  users.Remove(user);
              dataGrid.ItemsSource = null;
              dataGrid.ItemsSource = users;
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-04
        • 2023-03-20
        • 1970-01-01
        • 2018-11-15
        • 1970-01-01
        • 2021-06-17
        相关资源
        最近更新 更多