我遇到了一些麻煩,試圖爲我的DataGridView創建各種過濾器。 基本上我有4個按鈕,分別是'今天','本週','本月','今年'和'全部顯示'。 當我點擊任何按鈕時,我希望能夠只顯示與按下按鈕相關的行。日期的數據以下列格式存儲:「YYYY-MM-DDT00:00:00」,包括破折號和冒號。BindingSource過濾 - C#WPF
使用我的BindingData如何正確過濾給定格式的條目?如果您需要任何代碼,請告訴我。
我遇到了一些麻煩,試圖爲我的DataGridView創建各種過濾器。 基本上我有4個按鈕,分別是'今天','本週','本月','今年'和'全部顯示'。 當我點擊任何按鈕時,我希望能夠只顯示與按下按鈕相關的行。日期的數據以下列格式存儲:「YYYY-MM-DDT00:00:00」,包括破折號和冒號。BindingSource過濾 - C#WPF
使用我的BindingData如何正確過濾給定格式的條目?如果您需要任何代碼,請告訴我。
您可以使用CollectionView和CollectionViewSource來過濾數據。你可以參考MSDN。 How to: Group, Sort, and Filter Data in the DataGrid Control。
希望它能幫助你。
要對DataGrid中的數據進行分組,排序和過濾,請將其綁定到支持這些功能的CollectionView。然後,您可以使用CollectionView中的數據,而不會影響底層的源數據。 DataGrid用戶界面(UI)中反映了集合視圖中的更改。 CollectionView類爲實現IEnumerable接口的數據源提供了分組和排序功能。 CollectionViewSource類使您能夠從XAML設置CollectionView的屬性。
我會研究這個,謝謝你的帖子。 – Clarke
我設法實現了我一直在尋找的東西,我不知道這是否是最好的方法。 (!我敢肯定有更好的方法,因此,如果有,請讓我知道,我想在這裏學習)
這裏是我的代碼片段顯示我想要實現:
private void todayToolStripMenuItem_Click(object sender, EventArgs e)
{
DataView dv = _dataSource.Tables[0].DefaultView; //have a temp dataview to filter data in
DateTime date = new DateTime();
date = DateTime.Today;
string expression = date.Year.ToString() + "-" +
date.Month.ToString() + "-" + date.Day.ToString();
dv.RowFilter = string.Format("thedate = #{0}#", expression);
_tableNameBS.DataSource = dv;
dataGridView1.DataSource = _tableNameBS;
}
_tableNameBS是一個BindingSource,所以現在要刪除另一個函數中的過濾器,我需要調用的是'_tableNameBS.RemoveFilter',並將其恢復爲原始。
爲什麼日期/時間數據存儲爲文本?如果它實際上是二進制日期/時間,但想要做的事情會很容易,但是通過錯誤地存儲數據使得使用它很困難。數據存儲在您的控制範圍內的方式是什麼?順便說一句,你的標題說WPF,但你聲稱使用DataGridView,這是一個WinForms控件。那是怎麼回事? – jmcilhinney
我對標題的錯誤,當我發送這封郵件時已經很晚了,是的,存儲日期和時間的方式超出了我的控制範圍。 – Clarke