MukulMohal Ответов: 1

Как фильтровать datagridview на основе выбранного значения combobox изменено


привет
я пытаюсь отфильтровать datagridview с помощью combobox selectedvaluechanged. когда я пытаюсь это сделать, это приводит меня к ошибке. что колонка не найдена
я связал datagridview с базой данных программно и когда сетка заполняется данными то я пытаюсь отфильтровать данные
я делаю это в форме windows c#, пожалуйста, помогите мне...

Что я уже пробовал:

это я уже пробовал и говорит, что колонка серии не найдена.

private void cmbBillSeries_SelectedIndexChanged(object sender, EventArgs e)
        {
            DataTable dt1 = new DataTable();
            DataView dv = dt1.DefaultView;
            dv.RowFilter = string.Format("Series  LIKE '%{0}%'", cmbBillSeries.SelectedItem.ToString());
            grdSpanSale.DataSource = dv;
        }

1 Ответов

Рейтинг:
2

Keviniano Gayo

Ваш код не фильтровался по вашему источнику данных datagridview.
Эта строка просто создает пустую таблицу данных, а затем вы фильтруете:

DataTable dt1 = new DataTable(); //empty datatable
DataView dv = dt1.DefaultView;
dv.RowFilter = string.Format("Series  LIKE '%{0}%'", cmbBillSeries.SelectedItem.ToString()); //you filter an empty database without columns - hence you got an error


Вы можете попробовать это сделать для фильтрации по источнику данных datagridview:
(grdSpanSale.DataSource as DataTable).DefaultView.RowFilter = string.Format("Series  LIKE '%{0}%'", cmbBillSeries.SelectedItem.ToString());


MukulMohal

когда я попытался использовать это, я получил ошибку

'Object reference not set to an instance of an object.'

(... as System.Data.DataTable) returned null.

Keviniano Gayo

Как вы загрузили источник данных в свой datagridview?

MukulMohal

это метод, с помощью которого я заполняю свой datagridview

public void fromTOdate()
        {
            if (con.State == ConnectionState.Closed)
            {
                con.Open();
            }
            cmd = new SqlCommand("rptSaleSearch", con);
            cmd.CommandType = CommandType.StoredProcedure;

            cmd.Parameters.AddWithValue("@frmdt", frmdtDateTime.Text);
            cmd.Parameters.AddWithValue("@todt", todtDateTime.Text);
            cmd.ExecuteNonQuery();
            adp = new SqlDataAdapter(cmd);
            dt = new DataTable();
            adp.Fill(dt);

            grdSpanSale.DataSource = dt;
            grdSpanSale.Columns[2].Width = 50;
            grdSpanSale.Columns[2].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
            grdSpanSale.Columns[4].Visible = true;
}