2008-12-02 31 views
0

我們遇到了一些頁面的性能問題,我想問一下。如果我有一箇中繼器,並且在中繼器的項目模板中,我有一個綁定到sql數據源的下拉列表,那麼即使每次都返回相同的結果,每個項目都會調用一次select命令嗎?如果是這樣,作爲一個快速修復,將啓用緩存設置爲true並指定緩存持續時間確保該查詢每頁生命週期只運行一次?我知道我應該使用對象數據源,但是現在我想盡快解決這個問題。提前致謝。使用sql數據源在repeater的項目模板中綁定dropdownlist

回答

0

是的,據我所知,如果您沒有將緩存設置爲true,它將執行每個數據綁定調用的查詢。

就個人而言,您可能會更好地查詢結果,然後在ItemDataBound事件中手動綁定它,而不是用SQL數據源打擾,但是,如果您當前的擔心正在通過當前配置緩存應該會有很大幫助!

更新

添加了以下對評論做出迴應。你可以聲明一個頁面級別的變量來存放數據表,然後在項目數據綁定事件中你可以使用它來進行綁定,如果是CS,就可以使用它。這只是一個部分的例子......只是爲了讓這個想法貫穿始終。

partial class MyPage 
{ 
    private DataTable _ddlData; 

    protected void Page_Load(object sender, EventArgs e) 
    { 
     //Logic to fill _ddlData and then bind the repeater goes here 
    } 

    protected void Grid_ItemDataBound() //I forgot the proper parameters here 
    { 
     //Properly check for e.item.itemtype = Item or Alt item 
     DropDownList oList = (DropDownList)e.item.findcontrol("ddlItems"); //lookup for your item 
     oList.DataSource = _ddlData; 
     oList.DataBind(); 
    } 
} 
+0

您認爲存儲數據表結果的最佳存儲機制是什麼? page_load是否在所有項目數據綁定事件之前運行,以便我可以在頁面加載中查詢它們並將其粘貼在視圖狀態或其他內容中? – 2008-12-02 19:35:02

相關問題