[英]Multiple Bindings to a GridView DataSource
我試圖將三個查詢綁定到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。
DataGridView類支持標准Windows窗體數據綁定模型。 這意味着數據源可以是實現以下接口之一的任何類型:
- IList接口,包括一維數組。
- IListSource接口,例如DataTable和DataSet類。
- IBindingList接口,例如BindingList類。
- IBindingListView接口,例如BindingSource類。
您可能想綁定一個DataSet
然后
如果所有查詢都屬於同一類型,則可以在將它們綁定到gridview之前將它們組合為單個集合:
var aggregateQuery = query1.Concat(query2).Concat(query3);
GridView.DataSource = aggregateQuery;
如果查詢的類型不同,那么您要么需要執行一些操作以將它們轉換為單個通用模式(我們需要了解更多信息以提供詳細信息),要么需要具有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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.