У меня есть dataGrid (dataGridView1) в форме Windows. dataGridView1 заполняется из бизнес-объекта при загрузке формы. Это работает, как ожидалось:
bs.DataSource = oBadger_History.GetChild();
dataGridView1.AutoGenerateColumns = true;
dataGridView1.DataSource = bs;
У меня есть dateTimePicker (dateTimePicker1), а на dateTimePicker1_ValueChanged я хочу отфильтровать результаты dataGridView1, чтобы отображать результаты только для даты (v_issue_date), выбранной в dateTimePicker1. Я пробовал следующее (используя фильтр). .но не может заставить его работать. Может, поможет вторая пара глаз?
dateTimePicker1.Format = DateTimePickerFormat.Custom;
dateTimePicker1.CustomFormat = "M/d/yyyy";
cs.DataSource = bs.Filter = string.Format("v_issue_date LIKE '{0}%' ", dateTimePicker1.Text);
dataGridView1.DataSource = cs;
dataGridView1.Update();
dataGridView1.Refresh();
И имейте в виду, что я относительно новичок в c#. Я выполнил поиск (здесь и в Google), и хотя там была хорошая информация, она не имела прямого отношения к тому, чего я пытаюсь достичь.
В приведенном выше сценарии DataGridView1 выполняет refre sh, но refre sh не показывает примененный фильтр.
Просто чтобы исключить возможность несоответствия типа даты - я сделал очень простой фильтр - и все же DataGridView1 обновил sh, но не отобразил отфильтрованные данные.
BindingSource cs = new BindingSource();
cs.DataSource = dataGridView1.DataSource;
cs.Filter = "[v_firstname] = 'Jose'";
dataGridView1.DataSource = cs;
dataGridView1.Update();
dataGridView1.Refresh();
Эти неудачные попытки имитируют большинство примеров, которые я видел в Интернете. . поэтому я не уверен, почему фильтр не применяется.
РЕДАКТИРОВАТЬ - *********
Сохраняя это очень простым, я разместил загрузку и событие ниже :
private void ChildReport_Load(object sender, EventArgs e)
{
//BindingSource bs = new BindingSource();
bs.DataSource = oBadger_History.GetChild();
dataGridView1.AutoGenerateColumns = true;
dataGridView1.DataSource = bs;
}
private void dateTimePicker1_ValueChanged_1(object sender, EventArgs e)
{
bs.Filter = string.Format("v_issue_date = '{0:yyyy/MM/dd}'", dateTimePicker1.Value);
dataGridView1.DataSource = bs.Filter;
dataGridView1.Update();
dataGridView1.Refresh();
}
В приведенном выше примере таблица обновляется, но всегда возвращается пустой. Совпадений не найдено. Не уверен, в чем проблема. v_issue_date - это поле типа даты. Я разместил остановки в отладке и могу проверить, что dateTimePicker.Value находится в таблице. Не уверен, почему я не могу найти совпадение.
Edit 2 **********
Это бизнес-объект, который я использую для заполнения DataGridView1.
public daBindingList<Badger_History> GetChild()
{
BadgerContext cn = (BadgerContext)this.context;
var entityKist = cn.Badger_History.Where(b => b.v_child == "Child").ToList();
this.EntityList = new daBindingList<Badger_History>(entityKist);
return this.EntityList;
}