首页 文章

Datarow作为DataGridView的DataSource

提问于
浏览
0
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中显示所有带有选定订单ID的订单(您可以在组合框中选择),有人可以帮助我吗?因为当我在组合框中选择一个订单时,DataGridView不会改变...

2 回答

  • 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;
    }
    
  • 0
    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 这将过滤而不重新查询DataSource . StackOverflow - Filtering DataGridView without changing datasource

    (dataGridViewFields.DataSource as DataTable).DefaultView.RowFilter = string.Format("Field = '{0}'", textBoxFilter.Text);
    

相关问题