2017-09-08 17 views
-3

私はダラグリッドを持っており、ボタンを使用して選択した行を無効にしたいと考えています。どうすればいいですか?ありがとうボタンを使用してDataGridから選択項目を削除する方法

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

を、すべてのdownvotそれは知覚された仕事の欠如によるものです。ヘルプが必要な場合は、疑似ユニットテストを表示してください – GoldBishop

答えて

2

データを観測可能なコレクションにバインドします。そしてあなたのコレクションからそれを削除してください。

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); 
    } 
} 
-1

次のようなものを使用できます。

private void DeleteSelectedRows_Click(object sender, EventArgs e) 
{ 
    foreach (DataGridViewRow row in dataGrid.SelectedRows) 
    { 
     dataGrid.Rows.RemoveAt(row.Index); 
    } 
} 
0
if (datagrid1.SelectedItem != null) 
{ 
    datagrid1.Items.Remove((BindingData)datagrid1.SelectedItem); 
} 
+0

ItemsSourceプロパティを設定してもアイテムコレクションを削除することはできません。 – mm8

0

@Tobias Theelにより示唆されるようにあなたの代わりにListObservableCollectionを使用する場合:

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

次のように..youは、ソースコレクションから選択した項目を削除することができます。

XAML:

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

コード:あなたは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); 
    } 
} 

:FYI

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; 
    } 
} 
関連する問題