2017-02-23 97 views
0

У меня есть datagridview, в котором отображаются данные о продажах на основе номера счета. У меня есть другое datagridview, в котором перечислены продукты. Я добавил событие двойного щелчка ячейки в Product datagridview, и когда я дважды нажимаю на элемент, он должен появиться в моей продаже datagridvew. Но поскольку я добавил данные из базы данных в продажу datagridview на основе номера счета, я не могу добавить новый продукт к этому datagridview. Я получаю исключение, говоря, что строки не могут быть программно добавлены в коллекцию строк datagridviews, когда элемент управления привязан к данным.Получение исключений, говорящих, что строки не могут быть добавлены программно

вот мой код в пункты DataGridView ячейки двойным щелчком

var index = dgv_POS.Rows.Add(); 
     string a = dgv_ItemNamePOS.CurrentRow.Cells[0].Value.ToString(); 
     dgv_POS.Rows[index].Cells[1].Value = a.ToString(); 



     string CS = "data source=.; database=BillingSoftware; user id=sa; password=9495640"; 
     using (SqlConnection con = new SqlConnection(CS)) 
     { 
      con.Open(); 

      SqlCommand cmd = new SqlCommand("SELECT Item_No from Items where [email protected] AND Activate='Yes'", con); 
      cmd.Parameters.AddWithValue("@Name", a); 
      string k = cmd.ExecuteScalar().ToString(); 
      dgv_POS.Rows[index].Cells[1].Value = k; 


      SqlCommand cmd2 = new SqlCommand("SELECT Name from Items where [email protected] AND Activate='Yes'", con); 
      cmd2.Parameters.AddWithValue("@Name", a); 
      string k1 = cmd2.ExecuteScalar().ToString(); 
      dgv_POS.Rows[index].Cells[2].Value = k1; 

      SqlCommand cmd5 = new SqlCommand("SELECT Quantity_Type from Items where [email protected] AND Activate='Yes'", con); 
      cmd5.Parameters.AddWithValue("@Name", a); 
      string k3 = cmd5.ExecuteScalar().ToString(); 
      dgv_POS.Rows[index].Cells[3].Value = k3.ToString(); 
     } 

код на DataBound DataGridView

SqlDataAdapter da = new SqlDataAdapter("SELECT Item_no as [Item No.],Item,Qty_Type as [Qty Type], Price, Quantity, Amount FROM POS WHERE [email protected]", con); 
      da.SelectCommand.Parameters.AddWithValue("@Billno", txt_BillNoPOSUpdate.Text); 
      DataTable dt = new DataTable(); 
      da.Fill(dt); 
      dgv_POSUpdate.DataSource = dt; 
+0

Вы, вероятно, нужно добавить строку в DataSet/DataTable, который DataSource для указанного DataGrid и двигаться на. Существует также доступный элемент управления для добавления новой строки в DataGrid, которую вы можете реализовать. – A3006

ответ

1

ошибка говорит вам, что вам нужно сделать:

Ряды не может быть программно добавлен в коллекцию строк datagridviews, когда элемент управления привязан к данным.

Поскольку DataGridView привязан к данным, вы не добавляете к нему строку, вы добавляете строку/элемент в источник данных.

Чтобы добавить новую строку в сетке добавить новый пункт продажи:

sales.Add(new Sale { Name= name, Price = 123 }); 
//or if its a DataTable 
sales.Rows.Add(new object[] { name,123 }); 
+0

Я не использую список. Я обновил свой вопрос. Пожалуйста, обратитесь к этому. – Abhijith

+0

Я дал вам пример DataTable в моем ответе. Чтобы добавить строку в сетку, вы просто выполните: 'dt.Rows.Add (новый объект [] {name, 123});' –