动态DataGridView的最佳数据类型

时间:2014-01-02 10:10:50

标签: c# sql linq datagridview datasource

我正在使用名为 CustomizedGrid UserControl,其中包含DataGridView和几个标签,用于显示有关行的信息。

首先,我选择Linq To Sql作为与SQL交谈的基础技术,所以无论我说什么或问什么都在Linq To Sql框架中。

约束#1 :我需要 CustomizedGrid 才能处理不同表格的数据源。
例如,我有一个用户表和一个客户表,我希望将一个表单中的用户传递给网格,而在另一个表单中, 客户

约束#2 :我需要存储数据源阴影,以便能够执行本地搜索。
例如,我在网格中加载了所有客户,然后我想搜索名称中包含“Mahdi”的客户,在我过滤“Mahdi”后,我希望再次看到所有客户。所以我想从数据库中获取客户,将其加载到我的主数据源以及 Shadow DataSource ,我在中过滤数据Shadow DataSource ,但主要数据仍保留在主数据源中,我可以再次加载主数据源,而无需从数据库中提取冗余数据。


我的问题:
哪种数据类型可以为我提供最好的服务?我不能使用通用列表,因为我不知道将托管哪个表,我不能使用IQueryable因为我不知道如何在以后投射它以便我可以搜索特定的字段。

我的信息缺乏此内容,您的答案实际上会受到欢迎。

1 个答案:

答案 0 :(得分:0)

你可能会这样:

约束1。您可以使用Join从不同的表中获取数据。

例如。 SELECT U.ID,U.NAME, C.NAME AS CUSTOMERNAME, C.DOB FROM USER U INNER JOIN CUSTOMER C ON U.ID = C.USERID

使用此查询填充DataTable,如adp.fill(datatable,query); 将此数据表绑定到您自定义的Datagridview,如customDataGridView1.DataSource = datatable;

Contraint 2。要过滤数据网格视图中的数据,您可以使用以下内容:

((DataTable)DataGridViews.DataSource).DefaultView.RowFilter =colmNameHere " like '%" + filterTextHere + "%'";

使用Linq加入

var query = from c in customers
        join o in orders on c.ID equals o.ID
        select new { c.Name, o.Product };