winforms 如何使用“筛选”绑定列表显示网格数据

cuxqih21  于 2023-08-07  发布在  其他
关注(0)|答案(3)|浏览(102)

我必须显示数据在一个网格绑定与绑定列表

BindingList<ExecutionSummaryData> ExecutionList
grid.DataSource = ExecutionList;

字符串
其中ExecutionSummaryData包含Name, Age, Address等属性(例如)。
现在,通过winform,当用户选择某些名称,年龄或其他参数时,我必须从ExecutionList中选择数据,并将过滤后的数据绑定到我的网格。
1.我能以某种方式将这个查询绑定到ExecutionList,以便每次查询字符串更改时,ExecutionList都会绑定到网格并显示过滤后的数据吗?
1.我是否可以将通过过滤器字符串从ExecutionList检索到的任何子列表绑定到我的网格,并且对于每个过滤器查询更改,它将从ExecutionList获取数据并相应地显示。
1.我不想在每个过滤器上清除和重新填充数据到ExecutionList,因为这个网格将真实的更新大约1000 - 2000万条记录。

编辑需求

请建议如何在这个ExecutionList上使用Linq查询或Lambda表达式的语法来获取过滤后的记录。过滤器查询将包括具有多个实体的条件,以进行比较并从列表中获取,如“
Select * from ExecutionList where name in('N1 ','N2','N3 ','N90')”AND AGE in('A1 ','A2','A3 ','A90')
请告诉我如何才能做到这一点?根据答复,我将更新我的问题与失踪/所需的信息。
谢谢你,
阿希什

ukqbszuj

ukqbszuj1#

如果要从DataTable中筛选数据,我建议使用DataView

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

字符串
也可以在DataView上使用排序

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


你可能想看看例子herehere

wz1wpwve

wz1wpwve2#

创建一个带分页的存储过程,并通过搜索过滤器检索几千个日期。或者你可以IQueryable,这样就可以根据你的过滤器触发查询,并检索数据。“这是评论,不是答案。

brgchamk

brgchamk3#

try { string EmpNo = txtEmployeeNumber.Text; List result = ViewState[“EmpList”] as List;

var singleEmp = result.Where(x => x.EmployeeNo == EmpNo).FirstOrDefault();


    if (singleEmp != null)
    {

        List<EmployeeClearanceDetailsEntity> singleEmpList = new List<EmployeeClearanceDetailsEntity> { singleEmp };


        gvViewEmpList.DataSource = singleEmpList;
        gvViewEmpList.DataBind();
        gvViewEmpList.Visible = true; 
    }

字符串

相关问题