【问题标题】:Best data type for a dynamic DataGridView动态 DataGridView 的最佳数据类型
【发布时间】:2014-01-19 18:13:58
【问题描述】:

我正在开发一个名为 CustomizedGridUserControl,其中包含一个 DataGridView 和几个用于显示行信息的标签。

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

约束 #1:我需要这个 CustomizedGrid 能够处理不同表的数据源。
例如,我有一个 Users 表和一个 Customers 表,在一种形式中我想将 Users 传递给网格,而在另一种形式中, 客户

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


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

此内容中缺少我的信息,欢迎您的回答。

【问题讨论】:

    标签: c# sql linq datagridview datasource


    【解决方案1】:

    你可以这样:

    约束 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

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

    约束 2. 要过滤 datagridview 中的数据,您可以使用以下内容:

    ((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 };
    

    【讨论】:

    • 感谢第二部分,但对于第一部分,我的意思是我希望 DataSource 能够从不同的表中获取数据,比如说获取 frmUsers 中的用户和 frmCust 中的客户,所以我不不想加入表,我希望 DataSource 使用不同的表来完成它的工作。而且我认为使用 DataTable 可以做到这一点,唯一的缺点是我必须将 IQueryable 转换为不是内置可用的 DataTable 并且本身也可能需要时间。有没有更好的办法?
    • @MahdiTahsildari 我添加了“使用 linq 加入”,这肯定会解决您的目的。
    猜你喜欢
    • 2017-01-28
    • 1970-01-01
    • 1970-01-01
    • 2010-09-18
    • 2022-06-30
    • 2018-12-11
    • 2021-10-20
    • 2023-03-28
    相关资源
    最近更新 更多