DataGridView возвращает null

Есть дгв2, в котором находятся чекбоксы. По какой то причине, при попытке получить значение ячейки, я получаю ошибку. введите сюда описание изображения

Допустим, хочу посмотреть в содержимое ячейки вот так

private void Import_DoubleClick(object sender, EventArgs e)
        {
            MessageBox.Show(dataGridView2.Rows[0].Cells[0].Value.ToString());
        }

Получаю ошибку

System.NullReferenceException: "Ссылка на объект не указывает на экземпляр объекта."

System.Windows.Forms.DataGridViewCell.Value.get вернул null.

Юмор в том, что есть код, который обращается к дгв2 точно так же, и никаких проблем, работает всегда. В нем я сохраняю дгв2 в бд.

private void button5_Click(object sender, EventArgs e)
        {
            string src = "0", upd = "0";
            if (radioButton1.Checked) src = "1";
            if (checkBox1.Checked) upd = "1";

            MySql.command($"UPDATE import SET link = '{MySql.escape(textBox2.Text)}', isupdate = '{upd}', source = '{src}', type = '{MySql.escape(comboBox1.Text)}', sklad = '{MySql.escape(comboBox2.Text)}', skip = '{textBox1.Text}', group_id = '{textBox3.Text}' WHERE name = '{MySql.escape(name)}'");

            MySql.command($"DELETE FROM import_ WHERE import_name = '{MySql.escape(name)}'");

            for (int i = 0; i < dataGridView3.Columns.Count; i++)
            {
                string combobox = "----------";
                if (dataGridView3.Rows[0].Cells[i].Value as string != null) combobox = dataGridView3.Rows[0].Cells[i].Value.ToString();

                MySql.command($"INSERT INTO import_ (columnindex, import_name, comboBox, checkBox) VALUES ('{i}','{MySql.escape(name)}','{MySql.escape(combobox)}','{dataGridView2.Rows[0].Cells[i].Value}')");
            }

            MessageBox.Show("Сохранено");
        }

Приведу еще код, который создает и заполняет все дгв.

private void loadGridsInfo()
        {
            var dt = MySql.getTable($"SELECT columnindex, comboBox, checkBox FROM import_ WHERE import_name = '{name}'");
            dt = dt.AsEnumerable().OrderBy(n => int.Parse(n[0].ToString())).CopyToDataTable();
            int count = dt.Rows.Count;
            int min;
            if (dataGridView1.Columns.Count < count) min = dataGridView1.Columns.Count;
            else                                     min = count;

            for (int i = 0; i < min ; i++)
            {
                if (dt.Rows[i][2].ToString() == "True") dataGridView2.Rows[0].Cells[i].Value = true;

                dataGridView3.Rows[0].Cells[i].Value = dt.Rows[i][1].ToString();
            }
        }

private void adaptGrids()
        {
            dataGridView2.Rows.Clear();
            dataGridView3.Rows.Clear();
            dataGridView2.Columns.Clear();
            dataGridView3.Columns.Clear();

            for (int i = 0; i < dataGridView1.Columns.Count; i++)
            {
                var clmn1 = new DataGridViewComboBoxColumn();
                var clmn2 = new DataGridViewCheckBoxColumn();

                clmn1.HeaderText = "C" + i;
                clmn2.HeaderText = "C" + i;
                clmn1.Width = dataGridView1.Columns[i].Width;
                clmn2.Width = dataGridView1.Columns[i].Width;
                clmn1.DataSource = comboBox;

                dataGridView2.Columns.Add(clmn2);
                dataGridView3.Columns.Add(clmn1);
            }
            dataGridView2.Rows.Add();
            dataGridView3.Rows.Add();
        }

Один из тех случаев, когда даже не знаю куда копать. Есть идеи?



Ответы (0 шт):