【问题标题】:Multiple Bindings to a GridView DataSource多个绑定到 GridView 数据源
【发布时间】:2017-03-30 12:55:25
【问题描述】:

我正在尝试将三个查询绑定到一个 GridView 数据源。据我了解,您不能将多个查询绑定到 GridView 数据源,这是真的吗?是这样,您将如何处理多个查询并将它们绑定到一个 GridView。例如:

var query1 = select * from table 1
var query2 = select * from table 2
var query3 = select * from table 3


GridView.DataSource = query1;
GridView.DataSource = query2;
GridView.DataSource  = query3;

这基本上是我想做的,但据我所知,这是可能的。有没有做这样的事情的好方法?谢谢!

所以,基本上我有多个查询,我需要所有查询的某些结果进入一个 GridView。

【问题讨论】:

  • 所有这些表都具有相同的结构吗?如果然后尝试使用 UNION 进行一个查询以返回所有数据
  • 你到底想达到什么目的?你想要查询的连接还是它的连接或其他什么?
  • 不同的结构。基本上我有多个查询,我需要所有查询的某些结果进入一个 GridView。

标签: c#


【解决方案1】:

来自DataGridView.DataSource Property

DataGridView 类支持标准的 Windows 窗体 数据绑定模型。这意味着数据源可以是任何类型 实现以下接口之一:

  1. IList 接口,包括一维数组。
  2. IListSource 接口,如 DataTable 和 DataSet 类。
  3. IBindingList 接口,例如 BindingList 类。
  4. IBindingListView 接口,例如 BindingSource 类。

你可能想绑定一个DataSet然后

【讨论】:

    【解决方案2】:

    如果所有查询都属于同一类型,那么您可以在将它们绑定到 gridview 之前将它们组合成一个集合:

    var aggregateQuery = query1.Concat(query2).Concat(query3);
    GridView.DataSource = aggregateQuery;
    

    如果查询不是同一类型,那么您要么需要将它们转换为单个通用架构(我们需要了解更多信息才能提供详细信息),要么您需要有 3 个单独的网格视图和每个查询只绑定一个。

    【讨论】:

      【解决方案3】:

      没错,你不能做多重绑定。

      但是,您可以连接查询以将所有记录引入单个 DataTable,然后绑定到它。

      假设 <asp:SqlDataSource... 您的 SELECT 在单个查询中包含全部数据

              DataSourceSelectArguments dss = new DataSourceSelectArguments();
              SqlDataSource sds = (SqlDataSource)YourControl.FindControl("your datasource control");
              if (sds != null)
              {
                  DataView dv = (DataView)sds.Select(DataSourceSelectArguments.Empty);
                  if (dv != null)
                  {
                      DataTable dt = (DataTable)dv.ToTable();
                      if (dt != null)
                      {
                        myGridView.DataSource = dt;
                        myGridView.DataSourceID = null; //won't be needed
                        myGridView.DataBind();
      etc
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-17
        • 1970-01-01
        • 1970-01-01
        • 2013-09-22
        相关资源
        最近更新 更多