我正在尝试将三个查询绑定到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。
答案 0 :(得分:0)
来自DataGridView.DataSource Property
DataGridView类支持标准Windows窗体 数据绑定模型。这意味着数据源可以是任何类型的数据源 实现以下接口之一:
- IList接口,包括一维数组。
- IListSource接口,例如DataTable和DataSet 类。
- IBindingList接口,例如BindingList类。
- IBindingListView接口,例如BindingSource类。
醇>
您可能希望绑定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