对GridView DataSource的多个绑定

时间:2012-09-26 15:40:42

标签: c#

我正在尝试将三个查询绑定到GridView DataSource。根据我的理解,你不能将多个查询绑定到GridView DataSource,这是真的吗?是这样,您将如何进行多个查询并将它们绑定到一个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。

3 个答案:

答案 0 :(得分:0)

来自DataGridView.DataSource Property

  

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

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

您可能希望绑定DataSet然后

答案 1 :(得分:0)

如果所有查询属于同一类型,则可以在将它们绑定到gridview之前将它们合并为一个集合:

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

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

答案 2 :(得分:0)

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

但是,您可以连接查询以将所有记录引入单个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