Добрый день. У меня есть на главной форме кнопка, по нажатию на которую открывается другая форма. При открытии этой формы я заполняю DataGridView данными из БД.
| Код | int bonus = 0; private void ClientsLoad(int b) { CommandText = "SELECT Clients_info.Id, Clients_info.Surname+' '+Left(Clients_info.Name,1)+'.'+Left(Clients_info.Patronymic,1)+'.', Clients_info.Phone_number FROM Clients_info INNER JOIN Bonus_card ON Bonus_card.Id = Clients_info.Id_bonus_card WHERE (Clients_info.SMS_sending = 1) AND Bonus_card.Accrued_bonuses >= " + b.ToString() + " AND Bonus_card.Id > 1;"; dataGridView1.AllowUserToAddRows = false; myCommand = new SqlCommand(CommandText, myConnection); mySqlDataAdapter = new SqlDataAdapter(myCommand); myDataSet = new DataSet(); mySqlDataAdapter.Fill(myDataSet); if (myDataSet.Tables.Count > 0) dataGridView1.DataSource = myDataSet.Tables[0].DefaultView; } private void Form_SMSSending_Load(object sender, EventArgs e) { this.Left = Screen.PrimaryScreen.Bounds.Width / 2 - this.Width / 2; this.Top = Screen.PrimaryScreen.Bounds.Height / 2 - this.Height / 2; ClientsLoad(bonus); if (dataGridView1.Columns.Count < 4) dataGridView1.Columns.Add(SMS_check); dataGridView1.Columns[0].Width = 45; dataGridView1.Columns[0].HeaderText = "№ п/п"; dataGridView1.Columns[1].HeaderText = "ФИО"; dataGridView1.Columns[2].HeaderText = "Телефон"; dataGridView1.Columns[3].HeaderText = "Выбрать"; }
|
Так вот, как видно из кода, у меня получается 4 столбца. Но при закрытии формы и при повторном открытии заголовки 3 и 0 столбца меняются местами. Не могу понять почему. Попробовал полностью очищать при закрытии DGV так:
| Код | private void Form_SMS_Sending_FormClosing(object sender, FormClosingEventArgs e) { myDataSet.Clear(); dataGridView1.SelectAll(); dataGridView1.ClearSelection(); dataGridView1.Columns.Clear(); }
|
И так:
| Код | private void Form_SMS_Sending_FormClosing(object sender, FormClosingEventArgs e) { while (dataGridView1.Columns.Count != 0) { dataGridView1.Columns.RemoveAt(dataGridView1.Columns.Count - 1); } }
|
Но в таком случае повторное открытие заканчивается ошибкой на строчке: dataGridView1.Columns[0].Width = 45; Подскажите, пожалуйста, как исправить первую проблему и в чем загвоздка со второй? P.S. По поводу второй, такое ощущение, что кода я удалил все столбцы, то повторно не смог использовать эти же индексы столбцов, как при удалении записи в БД. Но с такой проблемой я еще ни разу не сталкивался |