C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

■90104 / 3階層)  DataTableから行を削除する方法
□投稿者/ 魔界の仮面弁士 (2044回)-(2019/02/08(Fri) 22:49:16)
No90102 (やまびこ さん) に返信
> 2つのリストボックスがあり、片方から片方へとデータを移動させる

データバインドをお使いということであれば、
それぞれの ListBox に別々の DataTable を用意して、行を移動させる方法と、
両方の ListBox に同一の DataTable を共有させ、フィルターで絞り込む方法がありますね。


private void Form1_Load(object sender, EventArgs e)
{
 DataTable tbl = CreateSampleTable();

 tbl.Columns.Add("Selected", typeof(bool));
 listBox1.DataSource = new DataView(tbl, "ISNULL(Selected, false)=false", "", DataViewRowState.CurrentRows);
 listBox2.DataSource = new DataView(tbl, "ISNULL(Selected, false)=true", "", DataViewRowState.CurrentRows);
 listBox1.DisplayMember = listBox2.DisplayMember = "名前";

 MouseEventHandler MoveItem = (o, arg) =>
 {
  var rowView = ((ListBox)o).SelectedItem as DataRowView;
  if (rowView != null)
  {
   rowView.BeginEdit();
   rowView["Selected"] = (o == listBox1);
   rowView.EndEdit();
  }
 };
 listBox1.MouseDoubleClick += MoveItem;
 listBox2.MouseDoubleClick += MoveItem;
}

private static DataTable CreateSampleTable()
{
 var tbl = new DataTable("果物");
 tbl.Columns.Add("名前");
 tbl.Rows.Add("麝香猫果");
 tbl.Rows.Add("無花果");
 tbl.Rows.Add("葡萄柚");
 tbl.Rows.Add("五歛子");
 tbl.Rows.Add("鰐梨");
 tbl.Rows.Add("鳳梨");
 tbl.Rows.Add("檸檬");
 tbl.Rows.Add("茘枝");
 tbl.AcceptChanges();
 return tbl;
}
編集キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←Re[2]: DataTableから行を削除する方法 /やまびこ →Re[4]: DataTableから行を削除する方法 /やまびこ
 
上記関連ツリー

DataTableから行を削除する方法 / やまびこ (19/02/08(Fri) 18:21) #90100
Re[1]: DataTableから行を削除する方法 / 魔界の仮面弁士 (19/02/08(Fri) 19:05) #90101
  └ Re[2]: DataTableから行を削除する方法 / やまびこ (19/02/08(Fri) 20:07) #90102
    └ DataTableから行を削除する方法 / 魔界の仮面弁士 (19/02/08(Fri) 22:49) #90104 ←Now
      └ Re[4]: DataTableから行を削除する方法 / やまびこ (19/02/13(Wed) 11:06) #90162 解決済み

上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信