簡體   English   中英

ASPX中的數據表用作多個用戶控件的數據源

[英]Datatable in ASPX Used As DataSource For Multiple User Controls

在ASPX頁面中,我加載了7個用戶控件。 在每個用戶控件中,都有數據綁定控件(例如gridview)。

當前,每個用戶控件都運行查詢以返回數據。 對於每個用戶控件,返回的數據都是相同的,因此我篩選出需要為每個用戶控件顯示的內容。 因此,同一查詢正在運行7次(是的,我知道)。

我想做的是在ASPX頁面中創建數據表,然后允許每個gridview使用該數據表作為其數據源,因此查詢僅運行一次。

我將不勝感激。

也許您可以在用戶控件處公開一個獲取數據表的屬性。 在包含用戶控件的頁面上,設置屬性。

您可以在每個控件(例如列表)上設置一個公共屬性,然后在aspx頁中運行查詢並將其傳遞給控件

七個GridViews是過大的,將嚴重妨礙頁面的性能。 在您的主頁上一次獲取數據。 然后,您可以在用戶控件上設置屬性,並在每個用戶控件中以表格格式顯示。

我認為您正在考慮的方法會導致您做很多額外的工作。 更好地緩存數據表,然后在每個用戶控件執行查詢之前,先檢查緩存。 如果您從緩存中獲取數據表,則可以將其用於執行操作。 否則,您將執行查詢並從數據庫中獲取數據表。 這樣,現有的東西將起作用,並且您將以最小的努力獲得期望的結果。

如果您的用戶控件公開了允許將DataTable分配給它的屬性,則您應該能夠通過僅運行一次查詢來提供功能:

// In your ASPX page
DataTable dt = new DataTable()
... // populate the table from the database

userControl1.Source = dt;
userControl2.Source = dt;
...
userControl7.Source = dt;

// In your user controls
// Assumes a GridView called myGridView
public DataTable Source
{
    set
    {
        myGridView.DataSource = value;  //or hold it somewhere else
    }
}

它並不是有史以來最高效的代碼,但是通過這種方式,您將只執行一次查詢。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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