2011-07-21 30 views
-1

私は、MySQL(C#)で勝つ形の大学の学生出席プロジェクトを行っています。Winform Listbox1のアイテムコレクションをListbox2に移動できますか?

私はすでにHidden Column in Listboxを求めています。そのための解決策があります。

更新クエリ -

string MyConString = ConfigurationManager.ConnectionStrings["College_Management_System.Properties.Settings.cmsConnectionString"].ConnectionString; 
       MySqlConnection connection = new MySqlConnection(MyConString); 
       string cnd1 = "select name,admin_no from student_admision_master where course='" + course_code + "' AND year='" + year_code + "' AND sem='" + semester_code + "' AND batch='" + batch_code + "'"; 
       MySqlDataAdapter da = new MySqlDataAdapter(cnd1, connection); 
       connection.Open(); 
       DataSet ds = new DataSet(); 
       MySqlCommand command = connection.CreateCommand(); 
       da.Fill(ds, "student_admision_master"); 
       //dataGridView1.DataSource = ds.Tables[formName]; 
       listBox1.DataSource = ds.Tables[0].DefaultView; 
       listBox1.DisplayMember = "name"; 
       listBox1.ValueMember = "admin_no"; 
       connection.Close(); 

私は、リストボックスに学生の名前を得ました。しかし、...リストボックスに移動コードのスローエラーにリストボックス..

//すべてListbox2項目がリストボックスに移動R 3

private void btn_toOd_Click(object sender, EventArgs e) 
      { 
       int count = listBox2.Items.Count; 
       for (int i = 0; i < count; i++) 
       { 
        listBox3.Items.Add(listBox2.Items[i].ToString()); 
       } 
       listBox2.Items.Clear(); 
      } 

//すべてListbox3項目はリストボックス2

に移動rを

プライベートvoid btn_fromOd_Click(オブジェクト送信者、EventArgs e) { int count = listBox3.Items.Count; (int i = 0; i < count; i ++) { listBox2.Items.Add(listBox3.Items [i] .ToString()); } listBox3.Items.Clear(); DataSourceプロパティが 設定されている場合 }

//選択したアイテムのみ。..移動

private void btn_toAb_Selected_Click(object sender, EventArgs e) 
     { 
      int count = listBox1.SelectedItems.Count; 
      for (int i = 0; i < count; i++) 
      { 
       listBox2.Items.Add(listBox1.SelectedItems[i].ToString()); 
      } 

      for (int i = 0; i < count; i++) 
      { 
       listBox1.Items.Remove(listBox1.SelectedItems[0]); 
      } 
     } 

     private void btn_fromAb_Selected_Click(object sender, EventArgs e) 
     { 
      int count = listBox2.SelectedItems.Count; 
      for (int i = 0; i < count; i++) 
      { 
       listBox1.Items.Add(listBox2.SelectedItems[i].ToString()); 
      } 

      for (int i = 0; i < count; i++) 
      { 
       listBox2.Items.Remove(listBox2.SelectedItems[0]); 
      } 
     } 

Itemsコレクションを変更することはできません。論争の例外で。

どのようにリストボックス1のアイテムコレクションをリストボックス2に移動できますか。

そしてどうすればリストボックスから特定のValueMember(admin_no)にアクセスできますか?

bzs admin_noに基づいてレコードを保存します。

答えて

1

あなた....の情報が十分であるか、私はここに画像を追加することができ、...!事前に

おかげでこれを行うためのアイデアを与える...

てくださいですリストボックスはデータバインドされています。つまり、リストボックス内の項目はバインドマネージャによって自動的に管理されます。あなたは実際にあなたがそれを行う方法の周りに項目を移動することはできません。

代わりに、それに応じて基礎となるデータソースを変更する必要があります。これは、リストボックスにアイテムを追加/削除したり、その下にあるデータセットとの間でアイテムを追加/削除したりしないことを意味します。

リストボックス内の各項目は、DataRowまたはDataRowViewのいずれかで、というプロパティがあり、基になるDataRowにアクセスします。 DataRowにアクセスすると、row['fieldname']を使用してフィールド値を決定できます。

あるデータセットから別のデータセットに行を移動するには、行を追加するために宛先テーブルでImportRowメソッドを使用する必要があります。次に、ソース表から行を除去する必要があります。サンプル(私は今それを試していないとして、あなたが持つかもしれない、ビットをいじっする):!

DataRow row = listBox.SelectedItem; 
/* The above may need to be changed to 
    DataRow row = (listBox.SelectedItem as DataRowView).Row; 
    in case the SelectedItem is a DataRowView instead of a DataRow 
*/ 
destDataSet.Table.ImportRow(row); 
sourceDataSet.Table.Remove(row); 
+0

ああその可能なデータセットの変更のみヘクタール@ ... – Sagotharan

+0

は、私は2つの列のリストボックスのために行くことができます?その中で動くデータは可能ですか? Plsはこれを行う提案を....... – Sagotharan

+0

"2列のリストボックス"とはどういう意味ですか?学生1人当たり1行のリストボックスですが、姓と名字が表示される2つの列ですか? –

関連する問題