Datagridview 'vuurt' bij opstarten

Status
Niet open voor verdere reacties.

EdjeCageman

Gebruiker
Lid geworden
24 okt 2011
Berichten
273
Beste mensen,

Ik heb een DatagridView, deze wordt aangemaakt, geïnitialiseerd en gevuld, maar daarna crasht mijn code.
De constructor waar de datagridview is:

Code:
        {
            InitializeComponent();
            deleteUnusedTabs();

            detail = new AdministrationControlDetail();

            //Initialize Datagridview
            DataTable table = detail.getAllUsers();
            GridFoundUsers.DataSource = table;
            GridFoundUsers.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
            GridFoundUsers.MultiSelect = false;
            GridFoundUsers.RowHeadersVisible = false;
            GridFoundUsers.SelectionChanged += FoundUsers_SelectionChanged;
            SplitContainer.Panel2Collapsed = true;
            SplitContainer.Panel2.Hide();
        }

De selectionChanged event:
Code:
       void FoundUsers_SelectionChanged(object sender, System.EventArgs e)
        {
           String selectedusername = GridFoundUsers[0, GridFoundUsers.CurrentRow.Index].Value as String;

           SplitContainer.Panel2Collapsed = false;
           SplitContainer.Panel2.Show();

           System.Diagnostics.Debug.WriteLine(selectedusername);

           UserDetail detail = new UserDetail(selectedusername);
           GridApplications.DataSource = detail.getApplications();
           GridApplications.ClearSelection();
        }

En de code waar hij daadwerkelijk op crasht:
Code:
        public DataTable getTable(String query, Dictionary<String, Object> para)
        {
            database.con.Open();
            DataTable table = new DataTable();
            using(database.cmd = new SqlCommand(query, database.con))
            {
                database.cmd.CommandType = CommandType.Text;
                foreach(var value in para)
                {
                    database.cmd.Parameters.AddWithValue(value.Key, value.Value);
                }
                SqlDataReader reader = database.cmd.ExecuteReader();
                table.Load(reader);
            }
            database.con.Close();
            return table;
        }

Als ik de code debug wordt het laatste stuk code 3x aangeroepen.
1ste keer helemaal
2de keer stopt hij bij SqlDataReader reader = database.cmd.ExecuteReader(); en gaat hij door met andere code.
3de keer crasht hij helemaal bij: database.con.Open(); met de exceptoin: InvalidOperationException (logisch, de verbinding is bij de vorige niet gesloten)
Het lijkt dus alsof hij parallel wordt aangeroepen.

Overal online staat er dat ik de .Clearselection(); moet gebruiken, maar dit heeft ook geen enkele nut, hij blijft de selectie behouden.
 
Laatst bewerkt:
Het vreemde is ook, als ik deze code uitvoer:

Code:
GridApplications.DataSource = detail.getApplications();

Ook dan wordt de betreffende 'FoundUsers_SelectionChanged' weer aangeroepen, wat op zich ook vreemd is want de GridApplications is niet gebonden aan deze eventhandeler. Ik heb dit grid een andere event voorgeschoteld, en de foundusers detached, maar ook dat helpt niet :shocked:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan