WPF DataGrid theDataGrid
は、テーブルを含むDataSet ds
にバインドされています。グリッド内で線を選択し、ボタン(データグリッドの外側にある場所)を押して線を削除できるようにします。私は最終的に私がやりたい次のコード行に到着し、私はむしろ醜い検討している:WPFデータグリッドからの行の削除
DataSet ds = new DataSet();
...
// fill ds somehow
...
private void ButtonClickHandler(object Sender, RoutedEventArgs e)
{
List<DataRow> theRows = new List<DataRow>();
for (int i = 0; i < theDataGrid.SelectedItems.Count; ++i)
{
// o is only introduced to be able to inspect it during debugging
Object o = theDataGrid.SelectedItems[i];
if (o != CollectionView.NewItemPlaceholder)
{
DataRowView r = (DataRowView)o;
theRows.Add(r.Row);
}
}
foreach(DataRow r in theRows)
{
int k = ds.Tables["producer"].Rows.IndexOf(r);
// don't remove() but delete() cause of update later on
ds.Tables[0].Rows[k].Delete();
}
}
はこれを行うには良い方法はありますか?例えば。 1つのループしか必要とせず、NewItemPlaceHolder
を明示的にチェックする必要はありません。削除する行にアクセスするより効率的な方法がありますか?
私には解決策がありますか? – gasroot