【发布时间】:2018-02-17 02:04:28
【问题描述】:
我有 daragrid,我想使用按钮删除选定的行。我该怎么做?谢谢
dataGrid.ItemsSource = new List<User>(FormOfAddData.MyList);
【问题讨论】:
-
仅供参考,所有的反对意见都是由于缺乏感知工作。如果您需要帮助,请展示一些伪单元测试
我有 daragrid,我想使用按钮删除选定的行。我该怎么做?谢谢
dataGrid.ItemsSource = new List<User>(FormOfAddData.MyList);
【问题讨论】:
将您的数据绑定到可观察的集合上。只需将其从您的收藏中删除即可。
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);
}
}
【讨论】:
你可以使用类似下面的东西;
private void DeleteSelectedRows_Click(object sender, EventArgs e)
{
foreach (DataGridViewRow row in dataGrid.SelectedRows)
{
dataGrid.Rows.RemoveAt(row.Index);
}
}
【讨论】:
if (datagrid1.SelectedItem != null)
{
datagrid1.Items.Remove((BindingData)datagrid1.SelectedItem);
}
【讨论】:
如果您按照@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<User>,则必须重置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;
}
}
【讨论】: