同じdatagridview内の追加されたコンボボックス列の選択に応じて、datagridview列のセルの値を変更しようとしています。C#グリッドビューのコンボボックスに従ってグリッドビューの列データを変更しますか?
私はあらゆる種類の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__の名前で物事を呼び出す! DGVがデータバインドされている場合は、CellではなくDataSourceを変更する必要があります。 – TaW
私はそれを試みましたが、DataSourceを変更すると、それはすべての列に対して変更され、1つの列を変更するだけです。 他の列を手動で追加する以外はこれを行う方法はありませんか? –