簡體   English   中英

多重綁定到GridView的DataSource

[英]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.DataSource屬性

DataGridView類支持標准Windows窗體數據綁定模型。 這意味着數據源可以是實現以下接口之一的任何類型:

  1. IList接口,包括一維數組。
  2. IListSource接口,例如DataTable和DataSet類。
  3. IBindingList接口,例如BindingList類。
  4. 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM