Domanda

In visual Studio 2010 (using visual C#),I have a form where there is a listBox (named listBox1). The user selects one of the items displayed on the listBox and then clicks on a Save Button. The application saves the user's selection into a Database using:

cmd.CommandText = "insert into Table2 (kat) values ('"+listBox1.SelectedIndex.ToString()+"')"

(edit)For instance they are saved as 0 or 1 or 2 etc...

And then I want the application to use that int to select the same item on another listBox,with the exactly same items but on another form.

What I have so far is:

cmd.CommandText = "select * from Table1 WHERE username='"+textBox1.Text+"'";
                                dr = cmd.ExecuteReader();
                                if (dr.HasRows)
                                {
                                    while (dr.Read())
                                    {
                                        form1.listBox1.SelectedIndex(dr[0]);
                                    }

                                }
È stato utile?

Soluzione

You are inserting value as String in the database, and then trying to add values as Integer the wrong way

to properly insert value as integer

cmd.CommandText = "INSERT INTO Table1(kat) VALUES(@id)";
cmd.Parameters.AddWithValue("@id", listBox1.SelectedIndex);
cmd.ExecuteNonQuery();

The to create the copy of the listBox on other form you can do so by using a SELECT query.

Ex.

cmd.CommandText = "SELECT kat FROM Table1";

var reader = cmd.ExecuteReader();

while(reader.Read())
{
    otherListBox.Items.Add(reader[0]);
}
reader.Close();

To sync the list , try this

int index = listBox1.FindStringExact("id to find");

if (index > -1)
{
    listBox1.SelectedIndex = index;
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top