我想要更改datagridview列中单元格的值,具体取决于同一个datagridview中添加的组合框列中的选择。C#根据gridview组合框更改gridview列数据?
我有各种各样的BindingSources twiked,但似乎没有得到它很正确。
我正在使用的代码是:
conn = new SqlConnection(DBConnectionString);
select_order = new SqlCommand("SELECT orderNum, orderBy, orderShipadrs, orderDate FROM tblOrders WHERE orderNum=" + OrderID, conn);
da1 = new SqlDataAdapter(select_order);
select_lines = new SqlCommand("SELECT linenum, fkprdctnum, lineQuantity, lineprdctPrice FROM tblOrderLines WHERE fkOrdernum=" + OrderID, conn);
da2 = new SqlDataAdapter(select_lines);
da2.MissingSchemaAction = MissingSchemaAction.AddWithKey;
select_products = new SqlCommand("SELECT * FROM tblProducts", conn);
da3 = new SqlDataAdapter(select_products);
Orders = new DataSet();
try
{
da1.Fill(Orders, Order);
da2.Fill(Orders, Lines);
da3.Fill(Orders, Products);
}
catch
{
MessageBox.Show("There was an error connecting to the database.");
}
DataRelation prdctprice = new DataRelation(Relations, Orders.Tables[Products].Columns["prdctNum"], Orders.Tables[Lines].Columns["fkPrdctnum"]);
Orders.Relations.Add(prdctprice);
CurrentOrder.DataSource = Orders.Tables[Order];
CurrentOrder.Columns["orderNum"].HeaderText = "Number";
CurrentOrder.Columns["orderNum"].Width = 50;
CurrentOrder.Columns["orderBy"].HeaderText = "Customer Name";
CurrentOrder.Columns["orderBy"].Width = 150;
CurrentOrder.Columns["orderShipadrs"].HeaderText = "Shipping Address";
CurrentOrder.Columns["orderShipadrs"].Width = 200;
CurrentOrder.Columns["orderDate"].HeaderText = "Order Date";
CurrentOrder.Columns["orderDate"].Width = 100;
//masterBindingSource.DataSource = Orders;
//masterBindingSource.DataMember = Products;
CurrentLine.DataSource = Orders.Tables["Lines"];
DataGridViewComboBoxColumn prod = new DataGridViewComboBoxColumn();
prod.DataSource = Orders.Tables[Products];
prod.DisplayMember = "prdctName";
prod.ValueMember = "prdctNum";
prod.HeaderText = "Product";
CurrentLine.Columns.Add(prod);
//detailBindingSource.DataSource = masterBindingSource;
//detailBindingSource.DataMember = Relations;
CurrentLine.Columns["fkPrdctnum"].Visible = false;
CurrentLine.Columns["linenum"].Width = 60;
CurrentLine.Columns["linenum"].HeaderText = "Number";
CurrentLine.Columns["linenum"].ReadOnly = true;
CurrentLine.Columns["lineQuantity"].HeaderText = "Quantity";
CurrentLine.Columns["lineQuantity"].Width = 70;
CurrentLine.Columns["linePrdctPrice"].HeaderText = "Price";
CurrentLine.Columns["linePrdctPrice"].ReadOnly = true;
只要你有一个直观,可以很容易: 我想在“价格”列的单元格取决于选择的改变“产品“组合框。 组合框从数据集的一个表中获取数据,称为“产品”,而其余的数据网格则从名为“行”的表中获取数据。
问题是,是我唯一的选择删除“价格”列并手动添加另一列将随组合框更改吗?如果不是,我还有什么其他选择?
__不调用'DataGridView'''GridView'或'DataGrid'!这是错误的和混乱的,因为这些是不同的控制。总是用__right__的名字打电话给他们!是的,它需要更多__four__字母来输入.. - 至于你的问题:如果DGV是数据绑定的,你需要修改单元格而不是数据源。 – TaW
我尝试过,但更改DataSource更改了所有列,我只想要更改一列。 我认为没有办法做到这一点,除了手动添加另一列? –