簡體   English   中英

如何顯示帶有“已過濾”綁定列表的網格數據

[英]How to display Grid data with 'filtered' binding list

我必須在綁定列表綁定的網格中顯示數據

BindingList<ExecutionSummaryData> ExecutionList
grid.DataSource = ExecutionList;

其中ExecutionSummaryData包含Name, Age, Address等屬性(例如)。

現在通過Winform,當用戶選擇某些名稱,年齡或其他參數時,我必須從ExecutionList選擇數據,並且必須將過濾后的數據綁定到我的網格中。

  1. 我可以通過某種方式將此查詢綁定到ExecutionList以便每次查詢字符串更改時, ExecutionList都將綁定到網格並顯示過濾的數據嗎?

  2. 我可以將通過過濾器字符串從ExecutionList檢索到的任何子列表綁定到我的網格,並且對於每個過濾器查詢更改,它將從ExecutionList獲取數據並進行相應顯示。

  3. 我不想清除數據並將其重新填充到每個過濾器上的ExecutionList ,因為此網格將實時更新約10-20百萬條記錄。

編輯我的要求

請建議在此ExecutionList上使用Linq查詢或Lambda表達式的語法是什么,以獲取過濾的記錄。 過濾器查詢將包括具有多個實體的條件,以便比較並從“

ExecutionList中選擇*,其中((N1','N2','N3',,,'N90')“中的名稱和((A1','A2','A3',,,'A90' )

請提出建議,因為我該如何實現? 根據回復,我將使用缺少/所需的信息來更新我的問題。

謝謝,
阿什什

使用分頁創建存儲過程,並通過搜索過濾器並檢索幾千個日期。 或者,您也可以使用IQueryable ,這樣將根據您的過濾器觸發查詢並檢索數據。 “這是評論,而不是答案。

如果您想從DataTable過濾數據,我建議您使用DataView

DataView dv = new DataView();
dv = new DataView(parameterDs.Tables[0], "ParameterName = '@" + parameter.Key + "'",string.Empty, DataViewRowState.CurrentRows);

您還可以在DataView上使用sort

dv.Sort = "Name";

然后就用

grid.DataSource = dv;

使用DataView的另一種方法是通過為其分配一個查詢,如下所示:

DataTable contacts = dataSet.Tables["Contact"];

EnumerableRowCollection<DataRow> query = from contact in contacts.AsEnumerable()
                                         where contact.Field<string>("LastName").StartsWith("S")
                                         orderby contact.Field<string>("LastName"), contact.Field<string>("FirstName")
                                         select contact;

DataView view = query.AsDataView();

bindingSource1.DataSource = view;
dataGridView1.AutoResizeColumns();

或使用DataView'RowFilter'屬性:

DataTable contacts = dataSet.Tables["Contact"];

DataView view = contacts.AsDataView();

view.RowFilter = "LastName='Zhu'";

bindingSource1.DataSource = view;
dataGridView1.AutoResizeColumns();

每當您要清除過濾器時,只需編寫:

view.RowFilter = null; //or String.Empty

您可能想在這里這里看看示例:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM