После редактирования DataGridView CurrentRow.Cells не возвращает выбранные данные в c# - PullRequest
0 голосов
/ 26 апреля 2020

У меня есть DataGridView, содержащий данные из базы данных и кнопку просмотра сетки Просмотр .

Мой план,

Использование события gridView.Click(), когда я щелкните по строке, данные в столбце indexno в выбранной строке будут переданы в форму RecEdit с помощью конструктора. Так что я могу сделать редактирование и, наконец, сохранить. В целях отладки я отобразил данные, используя MesssageBox

Этот процесс отлично работает для первого редактирования

enter image description here

, но не удалось со второй попытки (после сохранения первого редактирования).

e

В процессе отладки я обнаружил, что это происходит потому, что когда я сохраните и обновите sh сетка данных view кнопка сетки достигает index 0 из index 9 позиции на сетке данных.

Мне удалось найти это решение,

private void gridviewtable_Click(object sender, EventArgs e)
        {
            selectedRow = gridviewtable.CurrentRow.Cells[0].Value.ToString();
            if(selectedRow == "View")
            {
            // if index 0 is "View" get index 1    
                selectedRow = gridviewtable.CurrentRow.Cells[1].Value.ToString();


            }

        }

Работает нормально, но не является идеальным решением, поэтому я надеюсь получить совет для решения этой проблемы.

Метод, используемый для перезагрузки данных,

// --- Search query ---
        public void searchData(string searchString)
        {
            db.openConnection();    // open connection
            string sQuery = "SELECT indexno,firstname,lastname,address,gender,dob,email,faculty,mobile FROM student WHERE CONCAT("+getConstraints().ToString()+" ) LIKE '%" + searchString + "%'";
            MySqlCommand cmd = new MySqlCommand(sQuery, db.getConnection());

            MySqlDataAdapter adapter = new MySqlDataAdapter(cmd);
            DataTable table = new DataTable();
            adapter.Fill(table);
            gridviewtable.DataSource = table;
            //gridviewtable.Columns.Remove("View");


            db.openConnection();    // close connection
        }

Метод загрузки формы данных,

private void Records_Load(object sender, EventArgs e)
        {
            string sQuery = "SELECT indexno,firstname,lastname,address,gender,dob,email,faculty,mobile FROM student WHERE CONCAT(" + getConstraints().ToString() + " ) LIKE '%%'";
            MySqlCommand cmd = new MySqlCommand(sQuery, db.getConnection());

            MySqlDataAdapter adapter = new MySqlDataAdapter(cmd);
            DataTable table = new DataTable();
            adapter.Fill(table);
            gridviewtable.DataSource = table;

            // --- view buttons ---
            DataGridViewButtonColumn viewBtn = new DataGridViewButtonColumn();

            // - view btn -
            viewBtn.HeaderText = "View";
            viewBtn.Name = "View";
            viewBtn.Text = "View";
            viewBtn.FlatStyle = FlatStyle.Flat;
            viewBtn.DefaultCellStyle.BackColor = Color.FromArgb(46, 169, 76);
            viewBtn.UseColumnTextForButtonValue = true;

            gridviewtable.Columns.Insert(9, viewBtn);
        }

Событие GridView_Click,

private void gridviewtable_Click(object sender, EventArgs e)
        {
        MessageBox.Show(gridviewtable.CurrentRow.Cells[0].Value.ToString());    // show selected IndexNo
            selectedRow = gridviewtable.CurrentRow.Cells[0].Value.ToString();
            /* my solution 
        if(selectedRow == "View")
            {

                selectedRow = gridviewtable.CurrentRow.Cells[1].Value.ToString();

            }*/

        }

объект openRecs,

// inside public partial class RecEdit : Form    
Records openRecs = (Records)Application.OpenForms["Records"]; 

Как refre sh выполняется при сохранении,

// query executed?
if (cmd.ExecuteNonQuery() == 1)
{

    openRecs.searchData("");    // refreshing by reloading data from db
    this.Close();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...