私はダラグリッドを持っており、ボタンを使用して選択した行を無効にしたいと考えています。どうすればいいですか?ありがとうボタンを使用してDataGridから選択項目を削除する方法
dataGrid.ItemsSource = new List<User>(FormOfAddData.MyList);
私はダラグリッドを持っており、ボタンを使用して選択した行を無効にしたいと考えています。どうすればいいですか?ありがとうボタンを使用してDataGridから選択項目を削除する方法
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);
}
ItemsSourceプロパティを設定してもアイテムコレクションを削除することはできません。 – mm8
@Tobias Theelにより示唆されるようにあなたの代わりにList
のObservableCollection
を使用する場合:
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;
}
}
を、すべてのdownvotそれは知覚された仕事の欠如によるものです。ヘルプが必要な場合は、疑似ユニットテストを表示してください – GoldBishop