Asp.net
DataBinding 事件在 ASP .NET 頁面生命週期內何時觸發?
簡單地說,如果我有一個 GridView,其數據源設置為 SqlDataSource 控制項聲明,那麼該數據源何時檢索其數據以及何時在頁面生命週期中發生綁定?
在“preRender”階段 - 查看ASP.NET 頁面生命週期概述以獲取更多資訊。
這篇關於Page Cycle的文章很不錯。
例如,假設您有一個 GridView,它在每行中顯示公司記錄以及 ListBox 控制項中的公司官員列表。要填寫管理人員列表,您可以將 ListBox 控制項綁定到數據源控制項(例如 SqlDataSource),該控制項在查詢中使用 CompanyID 檢索公司管理人員數據。
如果以聲明方式設置 ListBox 控制項的數據綁定屬性(如 DataSourceID 和 DataMember),則 ListBox 控制項將在包含行的 DataBinding 事件期間嘗試綁定到其數據源。但是,在 GridView 控制項的 RowDataBound 事件發生之前,行的 CompanyID 欄位不包含值。在這種情況下,子控制項(ListBox 控制項)在綁定包含控制項(GridView 控制項)之前綁定,因此它們的數據綁定階段不同步。
為避免這種情況,請將 ListBox 控制項的數據源控制項與 ListBox 控制項本身放在同一模板項中,並且不要以聲明方式設置 ListBox 的數據綁定屬性。而是在 RowDataBound 事件期間以程式方式在執行時設置它們,以便 ListBox 控制項在 CompanyID 資訊可用之前不會綁定到其數據。