Столбец с именем ID не найден. Имя параметра: columnName

У меня есть датагридвью, которую я обновляю и заполняю. Но та часть, где я ищу значение (returnID) в столбце (ID) в datagridview, говорит: "Столбец с именем ID не может быть найден. Имя параметра: columnName" И я не могу заставить его работать. Если у кого-то есть помощь, это очень ценится.

Код:

   private void Application_Load(object sender, EventArgs e)
    {
        // TODO: This line of code loads data into the 'registrationDataSet1.TestDB' table. You can move, or remove it, as needed.
        this.testDBTableAdapter.Fill(this.registrationDataSet1.TestDB);

        textBox1.Select();
    }

    private void DataTable_Connection(object returnName, string returnID)
    {
        String varID;
        Object varName;

        varID = textBox1.Text.Replace(@"L", "").ToString();
        varName = returnName;

        OleDbConnection OLEDB_Connection = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\\Registration.accdb");
        OleDbCommand updateCmd = new OleDbCommand();
        try
        {
            updateCmd.CommandText = "INSERT INTO TestDB ([Name], [ID]) VALUES (@NAME, @ID)";
            updateCmd.Parameters.AddWithValue("@Name", varName);
            updateCmd.Parameters.AddWithValue("@ID", varID);
            OLEDB_Connection.Open();
            updateCmd.Connection = OLEDB_Connection;
            updateCmd.ExecuteNonQuery();
            OLEDB_Connection.Close();
        }
        catch
        {
        }

        textBox1.Clear();

        int index = -1;

        DataGridViewRow row = DataGridView1.Rows
            .Cast<DataGridViewRow>()
            .Where(r => r.Cells["ID"].Value.ToString().Equals(returnID))
            .First();

        index = row.Index;

    }

    private void Register_Selection(object sender, KeyPressEventArgs e)
    {
        SqlConnection DBConnection = new SqlConnection("Data Source=DATABASE;Initial Catalog=imis;Integrated Security=True");
        SqlCommand cmd = new SqlCommand();
        String returnValue;
        Object returnName;
        Object returnID;
        string txtend = textBox1.Text;

        if (e.KeyChar == 'L')
        {
            e.Handled = true;
            DBConnection.Open();
        }

        if (DBConnection.State == ConnectionState.Open)
        {
            if (textBox1.Text.Length != 6) return;
            {
                cmd.CommandText = ("SELECT last_name +', '+ first_name from name where id =@Name");
                cmd.Parameters.Add(new SqlParameter("Name", textBox1.Text.Replace(@"L", "")));
                cmd.CommandType = CommandType.Text;
                cmd.Connection = DBConnection;
                returnValue = cmd.ExecuteScalar() + "\t " + textBox1.Text.Replace(@"L", "");
                returnName = cmd.ExecuteScalar();
                returnID = textBox1.Text.Replace(@"L", "");
                DBConnection.Close();

                DataTable_Connection(returnName, returnID.ToString());

                this.testDBTableAdapter.Fill(this.registrationDataSet1.TestDB);
            }
        }
    }

2 ответа

Я обнаружил, что когда я проверял это... MessageBox.Show(dataGridView1.Columns[0].Name);

В окне сообщения отображается текст заголовка столбца id как "idDataGridViewTextBoxColumn"

Поэтому вместо ссылки на имя столбца "ID" я ссылался на него, используя вместо него "idDataGridViewTextBoxColumn". И это сработало.

Попробуйте указать индекс столбца, например 0вместо того, чтобы давать имя столбца ID,

Другие вопросы по тегам