Israel

Israel

  • 701
  • 1.3k
  • 217.3k

Need to "loop" these codes until all records be deleted...

May 16 2017 8:32 PM
Hi!
 
I have database with one column. I wrote these codes to make four important steps:
 
1. Loading records from database into combobox
2. Display always the first item into combobox after loading
3. Delete this first item after to be displayed
4. Refresh the combobox after delete a record
 
All these steps work very well with my codes. But I would like to do it repeatly until deleting the latest record without make a bug.
But this moment its gives this message on this line:
Additional information:Its not possible to modify a item colection when a DataSource property is defined.
 
This happen at this line:
this.comboBox1.Items.AddRange(list.ToArray<string>());
 
private void button5_Click(object sender, EventArgs e)
Control p;
p = ((Button)sender).Parent;
p.SelectNextControl(ActiveControl, true, true, true, true);
int ia = 1;
 
conn.Open();
comm = new OleDbCommand("SELECT DISTINCT name FROM test1", conn);
OleDbDataReader sdr = comm.ExecuteReader();
DataTable dt = new DataTable();
dt.Load(sdr);
comboBox1.DisplayMember = "name";
comboBox1.DroppedDown = true;
List<string> list = new List<string>();
foreach (DataRow row in dt.Rows)
{
list.Add(row.Field<string>("name"));
}
this.comboBox1.Items.AddRange(list.ToArray<string>());//The bug its here
comboBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
comboBox1.AutoCompleteSource = AutoCompleteSource.ListItems;
conn.Close();
///////////////////////doesnt allow repeat item in combobox////////////
for (int i = 0; i < comboBox1.Items.Count; i++)
{
for (int y = 0; y < comboBox1.Items.Count; y++)
{
if (y != i && comboBox1.Items[i].ToString() == comboBox1.Items[y].ToString())
{
comboBox1.Items.RemoveAt(i);
break;
}
}
}
///////////////////////////////// Display First item
comboBox1.SelectedIndex = 0;
///////////////////////////////// Delete first item
String strConnection = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\Pario\Documents\Combobox_refresh\WindowsFormsApplication1\App_Datas\test.mdb;Persist Security Info=False";
string query = "delete from test1 where name='" + comboBox1.Text + "';";
OleDbConnection conDatabase = new OleDbConnection(strConnection);
OleDbCommand cmdDatabase = new OleDbCommand(query, conn);
OleDbDataReader myReader;
try
{
conn.Open();
myReader = cmdDatabase.ExecuteReader();
//MessageBox.Show("Dados excluidos com exito. Obrigado!");
while (myReader.Read())
{
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
conn.Close();
}
///////////////////////////////// Refresh Database and Combobox
OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\Pario\Documents\Combobox_refresh\WindowsFormsApplication1\App_Datas\test.mdb;Persist Security Info=False");
con.Open();
OleDbCommand cmd = new OleDbCommand("select name from test1", con);
OleDbDataAdapter SDA = new OleDbDataAdapter();
SDA.SelectCommand = cmd;
DataTable DT = new DataTable();
SDA.Fill(DT);
comboBox1.DataSource = DT;
con.Close();
Application.DoEvents();
ia++;
int milliseconds = 2000;
Thread.Sleep(milliseconds);
button5.PerformClick(); //Trigger click event
 }

Answers (5)