我有一个datagridview,它根据账单编号显示销售详情。我有另一个列出产品的datagridview。我在Product datagridview中添加了一个单元格双击事件,当我双击某个项目时,它应该出现在我的销售数据网格中。但是,由于我已根据账单编号将数据从数据库添加到销售数据网格中,因此无法将新产品添加到该数据网格视图中。 Iam得到例外,当控件是数据绑定时,无法以编程方式将行添加到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 Name=@Name 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 Name=@Name 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 Name=@Name AND Activate='Yes'", con);
cmd5.Parameters.AddWithValue("@Name", a);
string k3 = cmd5.ExecuteScalar().ToString();
dgv_POS.Rows[index].Cells[3].Value = k3.ToString();
}
数据绑定datagridview的代码
SqlDataAdapter da = new SqlDataAdapter("SELECT Item_no as [Item No.],Item,Qty_Type as [Qty Type], Price, Quantity, Amount FROM POS WHERE Bill_No=@Billno", con);
da.SelectCommand.Parameters.AddWithValue("@Billno", txt_BillNoPOSUpdate.Text);
DataTable dt = new DataTable();
da.Fill(dt);
dgv_POSUpdate.DataSource = dt;
答案 0 :(得分:1)
错误告诉您需要做什么:
当控件受数据绑定时,无法以编程方式将行添加到datagridviews行集合中。
由于DataGridView是Data-Bound,你不向它添加一行,你可以向数据源添加一个Row / Item。
List<Sale> sales = GetSalesInfo(id);
//or if its a DataTable
DataTable sales = GetSalesInfo(id);
dgv_POS.DataSource = sales; //<-- your DataGridView is bound to a data source
要向网格添加新行,请添加新的销售项目:
sales.Add(new Sale { Name= name, Price = 123 } );
//or if its a DataTable
sales.Rows.Add(new object[] { name,123 } );