0

我正在尝试将三个查询绑定到 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。

4

3 回答 3

0

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

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

如果查询不是同一类型,那么您要么需要做一些事情将它们转换为单个通用模式(我们需要了解更多以提供详细信息),要么您需要有 3 个单独的网格视图并且只绑定一个到每个查询。

于 2012-09-26T15:53:06.333 回答
0

来自DataGridView.DataSource 属性

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

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

你可能想绑定一个DataSetthen

于 2012-09-26T15:46:08.113 回答
0

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

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

IE

假设<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
于 2017-03-30T04:55:25.073 回答