public partial class Oef455 : Form
{
dtsOef444 dtsOrders = new dtsOef444();
dtsOef444TableAdapters.tblOrderinformatieTableAdapter TAOrderInfo = new dtsOef444TableAdapters.tblOrderinformatieTableAdapter();
dtsOef444TableAdapters.tblOrdersTableAdapter TAOrders = new dtsOef444TableAdapters.tblOrdersTableAdapter();
public Oef455()
{
InitializeComponent();
}
private void cbOrderID_SelectedIndexChanged(object sender, EventArgs e)
{
dataGridView1.DataSource = null;
int OrderID = int.Parse(cbOrderID.SelectedValue.ToString());
DataRow drOrders = dtsOrders.tblOrders.FindByOrderID(OrderID);
dataGridView1.DataSource = drOrders;
}
private void Oef455_Load(object sender, EventArgs e)
{
TAOrderInfo.Fill(dtsOrders.tblOrderinformatie);
TAOrders.Fill(dtsOrders.tblOrders);
cbOrderID.ValueMember = "OrderID";
cbOrderID.DisplayMember = "OrderID";
cbOrderID.DataSource = dtsOrders.tblOrders;
}
}
嗨,我想在DataGridView中显示具有选定OrderID(在组合框中可以选择)的所有Order,有人可以帮我吗?因为当我在组合框中选择一个订单时,DataGridView不会改变...
答案 0 :(得分:2)
private void cbOrderID_SelectedIndexChanged(object sender, EventArgs e)
{
dataGridView1.DataSource = null;
int OrderID = int.Parse(cbOrderID.SelectedValue.ToString());
DataRow drOrders = dtsOrders.tblOrders.FindByOrderID(OrderID);
dataGridView1.DataSource = drOrders;
}
我假设您正在使用TableAdapter
来填充DataGridView
。
请尝试将.Fill
与过滤后的表格一起使用。
private void cbOrderID_SelectedIndexChanged(object sender, EventArgs e)
{
if (cbOrderID.SelectedValue != null){
int OrderID = int.Parse(cbOrderID.SelectedValue.ToString());
TAOrders.Fill(dtsOrders.tblOrders.FindByOrderID(OrderID));
}
}
也许您为此TableAdapter还具有其他.Fill()
功能。
尝试.DefaultView.RowFilter
,这将过滤而无需重新查询数据源。
StackOverflow - Filtering DataGridView without changing datasource
(dataGridViewFields.DataSource as DataTable).DefaultView.RowFilter = string.Format("Field = '{0}'", textBoxFilter.Text);
答案 1 :(得分:0)
这是一种基于ComboBox的选定项更改DataGridView数据源的方法。
private void cbOrderID_SelectedIndexChanged(object sender, EventArgs e)
{
ComboBox combo = (sender as ComboBox);
DataRowView selectedItem = (combo.SelectedItem as DataRowView);
this.BindGrid(selectedItem);
}
private void BindGrid(DataRowView comboItem)
{
int OrderID = (int)comboItem.Row["OrderID"];
DataView view = new DataView(OrdersTable());
view.RowFilter = string.Format("OrderID = {0}", OrderID);
this.dataGridView1.DataSource = view;
}