как получить значение в datagridview с помощью автозаполнения текста

#c# #datagridview

#c# #datagridview

Вопрос:

Я создаю одно приложение, где medicine_name — это автозаполняемый текст, основываясь на этом выборе, я хочу заполнить Expiry_Date, но всякий раз, когда я запускаю код, указанный мне индекс находился за пределами исключения массива, извлекаю код, который я написал в событии dataGridView1_CellEndEdit я не знаю, где я ошибаюсь, я вставляю свой код и снимки экранаприложения и структуры таблицы

 private void dataGridView1_CellEndEdit_1(object sender, DataGridViewCellEventArgs e)
        {

 string connectionString = null;
            connectionString = ConfigurationManager.ConnectionStrings["AccessConnectionString"].ConnectionString;
            con.ConnectionString = connectionString;


            string medicinename = Convert.ToString(dataGridView1.Rows[e.RowIndex].Cells["Medicine_name"].Value);
            DateTime Expiry_Date = Convert.ToDateTime (dataGridView1.Rows[e.RowIndex].Cells["Expiry_Date"].Value);

            con.Open();
            cmd = new OleDbCommand("select Expiry_Date from Medicine_Available_Detail where Medicine_Name='"   medicinename   "'", con);
            OleDbDataReader dr = cmd.ExecuteReader();
            while (dr.Read())
            {
                Expiry_Date = Convert.ToDateTime (dr.GetValue(5));// exeception coming on this line
            }
            con.Close();


        }
  

введите описание изображения здесь
введите описание изображения здесь

Ответ №1:

Я получил решение.

 string connectionString = null;
connectionString = ConfigurationManager.ConnectionStrings["AccessConnectionString"].ConnectionString;
con.ConnectionString = connectionString;


string medicinename = Convert.ToString(dataGridView1.Rows[e.RowIndex].Cells["Medicine_name"].Value);
DateTime Expiry_Date=new DateTime (); 

con.Open();
cmd = new OleDbCommand("select Expiry_Date as Expiry_Date from Medicine_Available_Detail where Medicine_Name=@Medicine_Name",con);
cmd.Parameters.AddWithValue("@Medicine_Name",medicinename);
OleDbDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
    Expiry_Date = Convert.ToDateTime(dr["Expiry_Date"]);

}
dataGridView1.Rows[e.RowIndex].Cells["Expiry_Date"].Value = Expiry_Date; 
con.Close();