Как я решаю эту ошибку, строки не могут быть программно добавлены в коллекцию строк datagridview в настольном приложении C#
я создаю столбцы в gridview с помощью исходного кода и хочу, чтобы в этих столбцах отображалось значение из базы данных.,
public FRM_AUTO_SPARE_PARTS() { InitializeComponent(); CreateDataTable(); ReSizeDGV(); } void CreateDataTable() { dt.Columns.Add("column1"); dt.Columns.Add("column2"); dt.Columns.Add("column3"); dt.Columns.Add("column4"); dt.Columns.Add("column5"); dt.Columns.Add("column6"); dt.Columns.Add("column7"); dt.Columns.Add("column8"); dt.Columns.Add("column9"); dt.Columns.Add("column10"); dt.Columns.Add("column11"); dt.Columns.Add("column12"); dt.Columns.Add("column13"); dgv_Add_job_card.DataSource = dt; } void ReSizeDGV() { this.dgv_Add_job_card.RowHeadersWidth = 30; this.dgv_Add_job_card.Columns[0].Width = 70; this.dgv_Add_job_card.Columns[1].Width = 103; this.dgv_Add_job_card.Columns[2].Width = 103; this.dgv_Add_job_card.Columns[3].Width = 103; this.dgv_Add_job_card.Columns[4].Width = 108; this.dgv_Add_job_card.Columns[5].Width = 110; this.dgv_Add_job_card.Columns[6].Width = 120; this.dgv_Add_job_card.Columns[7].Width = 115; this.dgv_Add_job_card.Columns[8].Width = 115; this.dgv_Add_job_card.Columns[9].Visible = false; this.dgv_Add_job_card.Columns[10].Visible = false; this.dgv_Add_job_card.Columns[11].Visible = false; this.dgv_Add_job_card.Columns[12].Visible = false; dgv_Add_job_card.ColumnHeadersDefaultCellStyle.Font = new Font(dgv_Add_job_card.Font, FontStyle.Bold); } private void txt_Job_card_KeyDown(object sender, KeyEventArgs e) { if ((e.KeyCode == Keys.Enter)) { string s1 = " SELECT Auto_Part_Details.Items_No , Auto_Part_Details.Job_Card , Auto_Part_Details.Value_Part , Auto_Parts_Type.Parts_desc , "; s1 = s1 + " Repair_Type.Repair_desc , Auto_Part_Details.New_Old_Part , "; s1 = s1 + " Providers.Provider_desc , Hand_Installation.Installation_desc , Auto_Part_Details.Notes "; s1 = s1 + " FROM Auto_Part_Details "; s1 = s1 + " INNER JOIN Auto_Parts ON Auto_Part_Details.Job_Card = Auto_Parts.Job_Card "; s1 = s1 + " LEFT OUTER JOIN Hand_Installation ON Auto_Part_Details.Installation_id = Hand_Installation.Installation_id "; s1 = s1 + " LEFT OUTER JOIN Providers ON Auto_Part_Details.Provider_id = Providers.Provider_id "; s1 = s1 + " LEFT OUTER JOIN Repair_Type ON Auto_Part_Details.Repair_id = Repair_Type.Repair_id "; s1 = s1 + " LEFT OUTER JOIN Auto_Parts_Type ON Auto_Part_Details.Auto_Parts_id = Auto_Parts_Type.Auto_Parts_id "; s1 = s1 + " where Car_id = @Car_id and Auto_Part_Details.Job_Card = @Job_Card "; using (SqlDataAdapter sDA = new SqlDataAdapter(s1, con)) { sDA.SelectCommand.Parameters.AddWithValue("@Car_id", txt_Car_id.Text); sDA.SelectCommand.Parameters.AddWithValue("@Job_Card", txt_Job_card.Text); DataTable dt = new DataTable(); sDA.Fill(dt); foreach (DataRow item in dt.Rows) { int n = dgv_Add_job_card.Rows.Add(); dgv_Add_job_card.Rows[n].Cells[0].Value = item["Items_No"].ToString(); dgv_Add_job_card.Rows[n].Cells[1].Value = item["Job_Card"].ToString(); dgv_Add_job_card.Rows[n].Cells[2].Value = item["Value_Part"].ToString(); dgv_Add_job_card.Rows[n].Cells[3].Value = item["Parts_desc"].ToString(); dgv_Add_job_card.Rows[n].Cells[4].Value = item["Repair_desc"].ToString(); dgv_Add_job_card.Rows[n].Cells[5].Value = item["New_Old_Part"].ToString(); dgv_Add_job_card.Rows[n].Cells[6].Value = item["Provider_desc"].ToString(); dgv_Add_job_card.Rows[n].Cells[7].Value = item["Installation_desc"].ToString(); dgv_Add_job_card.Rows[n].Cells[8].Value = item["Notes"].ToString(); } }
Что я уже пробовал:
я пытаюсь написать этот код, но у меня есть что-то ошибка и спасибо