Datarow как источник данных DataGridView - PullRequest
0 голосов
/ 10 декабря 2018
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;
    }
}

Привет. Я пытаюсь показать все Заказы с выбранным OrderID (который вы можете выбрать в выпадающем списке) в DataGridView, кто-нибудь, кто может мне помочь?Поскольку при выборе ящика в выпадающем списке, DataGridView не изменяется ...

Ответы [ 2 ]

0 голосов
/ 10 декабря 2018

Вот один из способов изменить источник данных DataGridView на основе выбранного элемента ComboBox.

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 голосов
/ 10 декабря 2018
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));
    }
}

Возможно, у вас есть другие .Fill() Функции для этого TableAdapter.

Другой метод

Попробуйте .DefaultView.RowFilter, это отфильтровывает без запроса источника данных. StackOverflow - Фильтрация DataGridView без изменения источника данных

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